Из Википедии, свободной энциклопедии
Перейти к навигации Перейти к поиску

В программировании приложений Microsoft Windows OLE Automation (позже переименованная в Automation [1] [2] ) представляет собой механизм межпроцессного взаимодействия , созданный Microsoft . Он основан на подмножестве объектной модели компонентов (COM), который был предназначен для использования языками сценариев - первоначально Visual Basic, но теперь используется несколькими языками в Windows. Все объекты автоматизации необходимы для реализации интерфейса IDispatch . Он обеспечивает инфраструктуру, с помощью которой приложения, называемые контроллерами автоматизации, могут получать доступ и управлять (т. Е. Устанавливать свойства или вызывать методы) совместно используемыхобъекты автоматизации , экспортируемые другими приложениями. Он заменяет динамический обмен данными (DDE), более старый механизм, позволяющий приложениям управлять друг другом. [3] Как и в случае с DDE, в OLE Automation контроллер автоматизации является «клиентом», а приложение, экспортирующее объекты автоматизации, является «сервером».

Вопреки своему названию, объекты автоматизации не обязательно используют Microsoft OLE , хотя некоторые объекты автоматизации могут использоваться в средах OLE. Путаница уходит корнями в более раннее определение OLE Microsoft, которое ранее было более или менее синонимом COM.

Преимущества и ограничения [ править ]

Для обеспечения взаимодействия интерфейсы автоматизации ограничены использованием подмножества всех типов COM. [4] [5] В частности, интерфейсы автоматизации должны использовать SAFEARRAY вместо необработанных массивов COM.

Однако COM-серверы, совместимые с автоматизацией, могут полагаться на встроенную реализацию маршалинга OLE. [6] Это позволяет избежать необходимости в дополнительных проектах прокси / заглушки для маршалинга вне процесса.

Использование [ править ]

Автоматизация была разработана с учетом простоты написания сценариев, поэтому контроллеры часто предоставляют конечным пользователям такие языки, как Visual Basic для приложений , что позволяет им управлять объектами автоматизации с помощью сценариев. Объекты автоматизации часто пишутся на обычных языках, таких как C ++ , [7] где атрибуты C ++ могут использоваться для упрощения разработки [8]. Такие языки, как Visual Basic и Borland Delphi, также предоставляют удобный синтаксис для автоматизации, который скрывает сложность лежащих в основе выполнение.

Библиотеки типов [ править ]

Чтобы автоматизировать приложение, разработчик контроллера автоматизации должен знать объектную модель, которая используется целевым приложением, экспортирующим объекты активации. [9] Это требует, чтобы разработчик целевого приложения публично задокументировал свою объектную модель. Разработка контроллеров автоматизации без знания объектной модели целевого приложения «сложно или невозможно». [10] Из-за этих сложностей компоненты автоматизации обычно снабжены библиотеками типов , которые содержат метаданные о классах, интерфейсах и других функциях, предоставляемых библиотекой объектов. Интерфейсы описаны на языке определения интерфейсов Microsoft.. Библиотеки типов можно просматривать с помощью различных инструментов, таких как Microsoft OLE / COM Object Viewer ( oleview.exeвходит в состав Microsoft Platform SDK ) или Object Browser в Visual Basic (до версии 6) и Visual Studio .NET . Библиотеки типов используются для генерации кода шаблона / заглушки прокси для взаимодействия между COM и другими платформами, такими как Microsoft .NET и Java . Например, .NET Framework SDKвключает инструменты, которые могут создавать прокси .NET DLL для доступа к объектам автоматизации с использованием как раннего связывания (с информацией об интерфейсах, извлеченной из библиотеки типов), так и позднего связывания (через IDispatch, сопоставленный с .NET Reflection API), со встроенным Мост между .NET и COM называется COM Interop . [11] Хотя в Java отсутствует встроенная поддержка COM, такие инструменты, как JACOB [12] и jSegue [13], могут генерировать исходный код прокси (состоящий из двух частей, набора классов Java и исходного кода C ++ для библиотеки DLL собственного интерфейса Java ). из библиотек типов. Эти решения работают только в Windows. Другой j-Interop на основе Java [14]библиотека, которая обеспечивает взаимодействие с COM-компонентами без JNI , используя проводной протокол DCOM (MSRPC), а также работает на платформах, отличных от Windows.

Microsoft публично задокументирована объектная модель всех приложений в Microsoft Office , [15] и некоторые другие разработчики программного обеспечения также документальны объектные модели их применения. Объектные модели представлены контроллерам автоматизации в виде библиотек типов, интерфейсы которых описаны в ODL .

Языковая поддержка [ править ]

Автоматизация доступна для множества языков, включая, но не ограничиваясь:

  • ABAP
  • C
  • C ++ (с поддержкой COM компилятора, [16] или с такими библиотеками, как MFC или ATL )
  • C #
  • Visual Basic и Visual Basic для приложений
  • dBASE (через класс OleAutoClient)
  • Дельфи [17]
  • Языки Microsoft .NET [11]
  • APL (большинство версий Windows)
  • Java (только со сторонними инструментами)
  • JScript [9] и VBScript
  • Открытый объект Rexx [18]
  • Perl [19]
  • PHP [20]
  • PowerBuilder
  • Python [21] [22]
  • Ruby (через библиотеку win32ole, входящую в стандартный дистрибутив Ruby 1.8.x или новее)
  • Tcl [23]
  • Визуальный DataFlex
  • WinBatch [24]

См. Также [ править ]

  • ActiveX
  • Активные сценарии
  • Связывание и внедрение объектов (OLE)
  • Компонентно-объектная модель (COM)

Ссылки [ править ]

  1. ^ Корпорация Microsoft. «Автоматика (МФЦ)» . MSDN .
  2. ^ KruJ .; Уинго, Скотт; Шеперд, Джордж (1998). «Глава 25: Автоматизация». Программирование Microsoft Visual C ++ 6.0 (5-е изд.). Редмонд, Вашингтон: Microsoft Press . ISBN 978-1-57231-857-1.
  3. Гордон МакКомб (1997). «Использование OLE-автоматизации для управления WordPerfect» . Архивировано из оригинала на 2017-08-15 . Проверено 20 июля 2006 .- Маккомб описывает, как использовать OLE Automation вместо DDE для управления WordPerfect.
  4. ^ Microsoft MSDN: атрибут oleautomation
  5. ^ Microsoft MSDN: типы, совместимые с автоматизацией
  6. ^ Microsoft MSDN: Дополнения сообщества библиотеки типов Marshaling Details (COM)
  7. ^ Крис Окли. «OLE-автоматизация для программистов на C ++» .
  8. ^ MSDN Magazine: Атрибуты C ++: упростите программирование COM с помощью новой функции в Visual Studio .NET.
  9. ^ а б Иегуда Ширан и Томер Ширан. «OLE-автоматизация в JavaScript» . WebReference .- несмотря на название, в статье обсуждается JScript, а не JavaScript
  10. Брюс Армстронг (16 января 2006 г.). «OLE - Расширение возможностей PowerBuilder (Часть 2)» . Журнал разработчиков PowerBuilder . 12 (11).
  11. ^ a b Appleman, Дэн (2001). «Глава 15: COM-взаимодействие и доступ к Win32 API». Переход на VB.NET: стратегии, концепции и код . Апресс . ISBN 978-1-893115-97-2.
  12. ^ "Проект ДЖЕЙКОБ" . 2004-10-17.
  13. ^ "jSegue" . 2005-12-14.
  14. ^ «j-Interop Java COM совместимость с любой платформой» .
  15. ^ «Как найти и использовать документацию по объектной модели Office» . База знаний . Корпорация Майкрософт.
  16. ^ "Поддержка COM компилятора" . MSDN . Microsoft.
  17. ^ «Автоматизация OLE с использованием Delphi» . About.com .
  18. ^ «Открытый объект Rexx» .
  19. Ян Дюбуа (лето 1998 г.). "Win32 :: OLE" . Журнал Perl . 3 (2).
  20. ^ Группа PHP (2006-07-25). «PHP: COM и .Net (Windows)» .
  21. ^ Марк Хэммонд. «Python для расширений Windows» .
  22. ^ Sourceforge. "Пакет Comtypes Python" .
  23. ^ Программисты Tcl. «OLE с точки зрения Tcl» .
  24. ^ Стэн Литтлфилд. "OLE TUTORIAL WINBATCH OLE ПРОГРАММИРОВАНИЕ" .

Дальнейшее чтение [ править ]

  • Корпорация Microsoft (декабрь 1993 г.). Справочник программиста OLE 2: Создание программируемых приложений с помощью OLE Automation v. 2 . Справочная библиотека программиста. Microsoft Press . ISBN 978-1-55615-629-8.
  • Крейг Брокшмидт (1995). Внутри OLE . Microsoft Press .
  • Корпорация Microsoft (1996). Справочник программиста OLE Automation . Справочная библиотека программиста. Microsoft Press . ISBN 978-1-55615-851-3.
  • Корпорация Microsoft (1999). Справочник по языку Microsoft Office 2000 Visual Basic для приложений . Microsoft Press . ISBN 978-1-57231-955-4. - полная печатная документация объектной модели Microsoft Office

Внешние ссылки [ править ]

  • OLE Automation Общий документ о введении и проблемах внедрения OLE.
  • « VOLE - A Neat C ++ COM / Automation Driver » - библиотека драйверов автоматизации C ++ COM с открытым исходным кодом, не зависящая от компилятора, для использования при необходимости напрямую управлять IDispatch. VOLE очень надежен, полностью инкапсулирует все «низкоуровневые» аспекты IDispatch и очень гибок, принимая и возвращая обычные типы C ++.