OLE Automation

редактировать

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

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

Содержание

  • 1 Преимущества и ограничения
  • 2 Использование
    • 2.1 Библиотеки типов
    • 2.2 Поддержка языков
  • 3 См. Также
  • 4 Ссылки
  • 5 Дополнительная литература
  • 6 Внешние links

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

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

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

Использование

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

Библиотеки типов

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

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

Поддержка языков

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

См. также

Ссылки

Дополнительная литература

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

  • OLE Automation Общий документ по введение и проблемы с внедрением OLE.
  • "VOLE - A Neat C ++ COM / Automation Driver "- библиотека драйверов автоматизации C ++ COM с открытым исходным кодом, не зависящая от компилятора, для использования при непосредственном управлении IDispatch. VOLE очень надежен, полностью инкапсулирует все "низкоуровневые" аспекты IDispatch и является очень гибким, принимая и возвращая обычные типы C ++.
Последняя правка сделана 2021-06-01 06:24:59
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте