Архитектура СОМ. Использование СОМ-объектов

   
На этом шаге мы приведем общие сведения о COM-объектах.

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

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

   
Например приложение, являющееся исполняемым файлом, может подключаться к СОМ-компоненту,
находящемуся в DLL. А поскольку такая операция происходит динамически, то им не обязателно находиться
в одном месте. В процессе нахождения и подключения двоичного объекта программа работает совместно с
операционной системой. В СОМ определены все элементы, совместно используемые программой и
операционной системой для обеспечения корректной работы динамического подключения.

   
На рисунке 1 показаны элементы, участвующие в этом процессе.


Рис.1. СОМ-элементы, используемые для поддержки динамического подключения

   
СОМ-объекты могут находиться как в DLL-, так и в ЕХЕ-файлах. Каждый их них в обязательном
порядке должен быть зарегистрирован в операционной системе Windows. Сведения о
регистрации хранятся в системном реестре, там же находится ClassID - уникальный в глобальном масштабе
идентификатор класса в особом формате. Его еще называют GUID. Более подробно мы расскажем о нем далее.

   
При создании динамического подключения клиент идентифицирует зарегистрированный двоичный СОМ-объект по его
ClassID. Библиотеки СОМ времени исполнения представляют собой неотъемлемую часть
операционной системы Windows и позволяют клиентам находить и создавать объекты классов СОМ.

   
Получив ClassID, библиотеки СОМ просматривают основной раздел реестра HKEY_CLASSES_ROOT в поисках
соответствующего СОМ-объекта. Найдя его, они создают его экземпляр и возвращают указатель на интерфейс
объекта. Клиент использует этот указатель для вызова методов объекта. В противном случае (искомый объект
обнаружить не удалось) клиент извещается об ошибке. Обычно приложение взаимодействует с таким динамически созданным
объектом, вызывая его методы, перечисленные в указателе на его интерфейс. Если по замыслу объект должен
предпринимать активные действия (инициировать взаимодействие с клиентской программой), Вам придется
зарегистрировать в нем методы обработки событий. При соответствующих четко заданных условиях объект генерирует
события, обрабатываемые этими методами.

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

   
На следующем шаге мы рассмотрим интерфейсы COM.



Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий