Расширения СОМ


СОМ-клиенты

Очень важным при разработке СОМ-приложений является создание приложений, называемых СОМ-клиентами, которые могут запрашивать интерфейсы объектов, чтобы определить те услуги, которые может предоставить СОМ-объект.

Типичным СОМ-клиентом является диспетчер автоматизации (Automation Controller). Диспетчер автоматизации - это часть приложения, которая знает какой тип информации необходим ему от.разных объектов сервера, и она запрашивает данную информацию по мере надобности.

Технология СОМ изначально разрабатывалась как ядро для осуществления межпрограммного взаимодействия. Уже на этапе разработки предполагалось расширять возможности технологии при помощи так называемых расширений СОМ. СОМ расширяет собственную функциональность, благодаря созданию специализированных наборов интерфейсов для решения конкретных задач.

Технология ActiveX - это технология, которая использует компоненты СОМ, особенно элементы управления. Она была создана для того, чтобы работа с элементами управления была более эффективной. Это особенно необходимо при работе с приложениями Internet/Intranet, в которых элементы управления должны быть загружены на компьютер клиента, прежде чем они будут использоваться.

Технология ActiveX - не единственное расширение СОМ. В табл. 3.2 представлены некоторые из используемых в настоящее время расширений СОМ.

Перечисленные в табл. 13.1 расширения СОМ - это далеко не все из имеющихся. Постоянно идет доработка старых и создание новых, более совершенных технологий межпрограммного взаимодействия.

Таблица 13.1 - Список расширений СОМ

Расширение СОМ   Краткое описание  
Серверы автоматизации (Automation servers) Серверы автоматизации- это объекты, которыми можно управлять из других приложений во время работы приложения. Таким образом, автоматизация-это способность приложения программно контролировать объекты других приложений
Диспетчеры автоматизации или СОМ-клиенты (Automation Controllers, COM Clients) Диспетчеры автоматизации- это клиенты серверов автоматизации. Они позволяют разработчику или пользователю писать сценарии для управления серверами автоматизации
Элементы управления ActiveX (ActiveX Controls) Элементы управления ActiveX предназначены для серверов внутри процесса (in-process COM servers). Элементы ActiveX обычно используются путем встраивания в приложение-клиент
Библиотеки типов (Type Libraries) Библиотеки типов представляют собой статичные структуры данных, которые часто сохраняются как файлы ресурсов. Они содержат детализированную информацию об объекте и его интерфейсах. Клиенты серверов автоматизации и элементы управления ActiveX используют данную информацию и всегда считают ее доступной
Страницы активного сервера (Active Server Pages) Активные серверные страницы- это компоненты ActiveX, которые позволяют вам создавать динамически изменяющиеся Web-страницы
Активные документы (Active Documents) Активные документы - это объекты, которые поддерживают связывание и внедрение, визуальное редактирование, перенос (drag-and-drop). В качестве примера таких документов можно представить документы Microsoft Word и книги Microsoft Excel
Визуальные межпроцессные объекты (Visual Cross-process Objects) Визуальные межпроцессные объекты- это визуальные объекты, которыми можно управлять из других процессов

 

На рис. 13.6 представлена диаграмма, которая показывает связь некоторых расширений СОМ и их связь с технологией СОМ.

Использование СОМ-объектов имеет как преимущества, так и некоторые ограничения. СОМ-объекты могут быть как визуальными, так и невизуальными. Какие-то СОМ-объекты должны быть запущены в одном процессе с клиентом, другие - в разных процессах либо на разных,,компьютерах.

Приведенная ниже табл. 13.2 кратко описывает особенности объектов каждого из вышеприведенных расширений СОМ.

 

Рисунок 13.6 -Технологии, основанные на СОМ

Таблица 13.2 -Особенности объектов СОМ

СОМ-объект Визуаль-ность Процесс Связь Библиотека типов
Активный документ (Active Document) Обычно визуальный Внутренний или локальный OLE Нет
Автоматизация (Automation) Может быть как визуальным, так и невизуальным Внутренний, локальный или удаленный Автоматический маршалинг при помощи интерфейса IDispatch Требуется для автоматического маршалмнга
Элемент управления ActiveX (ActiveX Control) Обычно визуальный Внутренний Автоматический маршалинг при помощи интерфейса IDispatch Требуется
Произвольный объект интерфейса По выбору Внутренний Не требуется маршалинг Рекомендуется
Произвольный объект интерфейса По выбору Внутренний, локальный или удаленный Автоматический маршалинг в зависимости от библиотеки типов, в противном случае-ручной маршалинг Рекомендуется