Интерфейс COM

Общая концепция

Технология COM

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

Компоненты СОМ состоят из исполняемого кода, распространяемого в виде динамически компонуемых библиотек (DLL) или EXE-файлов Win32.

Для динамического подключения друг к другу компоненты СОМ используют DLL. Однако, сама по себе динамическая компоновка не обеспечивает компонентной архитектуры: компоненты должны быть инкапсулированы.

Обеспечение инкапсуляции в компонентах COM достигается за счет соблюдения ряда следующих технологических ограничений:

1. Компоненты полностью независимы от языка программирования (т.е. могут быть разработаны с помощью практически любого процедурного языка).

2. Компоненты могут распространяться в информационной среде в двоичной форме.

3. Компоненты можно модернизировать, не нарушая работы старых клиентов (СОМ предоставляет стандартный способ реализации разных версий компонента).

4. Компоненты СОМ можно прозрачно перемещать по сети (компонент на удаленной системе рассматривается так же, как компонент на локальном диске компьютера).

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

При разработке приложений COM пользуются следующими составные части технологии:

Интерфейс COM – описывает методы и свойства, доступные программам, обращающимся к объекту.

Сервер COM – законченный модуль кода (EXE или DLL), в котором хранится программный код одного или нескольких объектов COM.

Клиент COM – программный код, в котором происходит обращение к интерфейсу с запросом на выполнение услуг сервера COM.


Интерфейсы составляют основу данной технологии. Для клиента компонент представляет собой набор интерфейсов, которые являются единственным каналом взаимодействия клиента с компонентом СОМ.

Компонент можно удалить и заменить другим; если новый компонент поддерживает те же интерфейсы, что и старый, приложение будет работать по-прежнему.

Интерфейс COM позволяет клиентам COM общаться с сервером на основе стандартного механизма публикации интерфейса. После того, как интерфейс COM опубликова н (стандартным способом зарегистрирован системой), изменять его нельзя, что гарантирует одинаковую работу объекта COM в любых условиях.

У любого объекта COM имеется базовый интерфейс – IUnknown, который позволяет узнать, какие еще интерфейсы COM доступны для клиента COM. Все эти интерфейсы наследуют характеристики интерфейса IUnknown.

Уникальность интерфейса обеспечивается его глобальным идентификатором – Globally Unique IDentifier (GUID) длиной 16 байтов. Каждый объект COM имеет идентификатор интерфейса – Interface IDentifier (IID) на основе GUID. GUID требуется для избежания проблем при появлении интерфейсов COM с одинаковыми именами.

Благодаря наличию стандартных интерфейсов объект COM может быть реализован на любом языке программирования. Интерфейс IUnknown содержит метод QueryInterface, возвращающий ссылку на другие доступные интерфейсы, а также методы AddRef и Release, которые увеличивают и уменьшают счетчик ссылок на конкретный интерфейс.

Счетчик увеличивается при обращении к интерфейсу и уменьшается при освобождении интерфейса. Как только значение счетчика равно нулю, т.е. к интерфейсу больше нет обращений, соответствующий объект COM может быть удален из памяти до следующего запроса к его интерфейсу.

На основе технологии COM был создан ряд расширений: серверы автоматизации (OLE), активные серверные страницы (.ASP), встраиваемые серверы ActiveX с визуальной настройкой и др.



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: