stringtranslate.com

OLE-автоматизация

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

Вопреки названию, объекты автоматизации не обязательно используют Microsoft OLE , хотя некоторые объекты автоматизации можно использовать в средах OLE. Эта путаница уходит корнями в более раннее определение Microsoft OLE, которое ранее было более или менее синонимом 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 ( oleview.exeчасть Microsoft Platform SDK ) или обозреватель объектов в Visual Basic (до версии 6) и Visual Studio .NET . Библиотеки типов используются для создания шаблона / заглушки прокси-сервера для взаимодействия между COM и другими платформами, такими как Microsoft .NET и Java . Например, в состав SDK .NET Framework входят инструменты, которые могут создавать прокси-библиотеку .NET DLL для доступа к объектам автоматизации, используя как раннее связывание (с информацией об интерфейсах, извлеченной из библиотеки типов), так и позднее связывание (через IDispatch, сопоставленное с .NET Reflection). API) со встроенным мостом .NET-COM под названием COM Interop . [11] Хотя в Java отсутствует встроенная поддержка COM, такие наборы инструментов, как JACOB [12] и jSegue [13], могут генерировать исходный код прокси (состоящий из двух частей: набора классов Java и исходного кода C++ для библиотеки DLL Java Native Interface ). из библиотек типов. Эти решения работают только в Windows. Еще одна библиотека j-Interop [14] на основе Java , которая обеспечивает взаимодействие с COM-компонентами без JNI , используя проводной протокол DCOM (MSRPC), а также работает на платформах, отличных от Windows.

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

Языковая поддержка

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

Смотрите также

Рекомендации

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

дальнейшее чтение

Внешние ссылки