Архитектура Microsoft Windows для разработчиков


              

в виде библиотек динамической загрузки


Внутрипроцессные компоненты
Внутрипроцессные компоненты обычно реализуется в виде библиотек динамической загрузки (DLL). Они выполняются в том же адресном пространстве, что и клиент. Это самый эффективный метод связи между клиентом и компонентом — чтобы воспользоваться возможностями компонента, клиенту достаточно вызвать функцию.
Внепроцессные компоненты
Если объект находится вне процесса, вызов сначала переадресуется объекту-представителю (proxy), который предоставляется моделью СОМ или самим объектом (если его автор этого пожелает). Представитель упаковывает параметры вызова (включая любые указатели на интерфейс) и генерирует соответствующий RPC-вызов (или иной механизм в случае самостоятельно реализованных представителей), адресованный другому процессу или компьютеру, где реализован объект.
Связь с сервером
На сервере все вызовы функций интерфейса объекта выполняются через указатель на этот интерфейс. Указатель имеет смысл только в контексте конкретного процесса, поэтому роль вызывающего может играть только код того же процесса. Если объект внутрипроцессный, вызывающим будет сам клиент, в противном же случае — объект-«заглушка» (stub), предоставляемый СОМ или самим объектом. Заглушка принимает вызов RPC (или другого механизма в случае самостоятельно реализованного представителя) от представителя процесса-клиента, распаковывает параметры и вызывает соответствующий интерфейс серверного объекта. Независимо от конкретного механизма, клиент и сервер всегда считают, что взаимодействуют непосредственно с кодом внутри процесса.
Удаленный вызов процедур
Удаленный вызов процедур (Remote Procedure Call, RPC) основан на спецификации RPC распределенной среды программирования (Distributed Computing Environment, DCE-RPC) и по этой причине не зависит от платформы. СОМ-компоненты могут вызывать друг друга в гетерогенной среде, включающей платформы Windows 95, Windows NT, Unix и Macintosh и другие, поддерживающие DCE-RPC.
Резюме
СОМ позволяет клиентам связываться с объектами прозрачно, независимо от того, где они выполняются: в рамках того же процесса, в другом процессе или на ином компьютере.
Библиотека СОМ — основа прозрачного взаимодействия между процессами. Она инкапсулирует всю работу, связанную с запуском компонентов и установлением связи между ними, а также избавляет компоненты от контроля за их фактическим местонахождением.
Поддержка контроля версий и эволюции компонентов — фундамент СОМ. Благодаря ей, серверные объекты СОМ поддерживают интерфейсы для старых клиентов, одновременно предоставляя новым интерфейсы самой свежей версии.

Содержание  Назад  Вперед