Распределённые системы объектов. DCOM

Р аспределенная модель СОМ (Distributed СОМ, DCOM) корпорации Microsoft. Как можно понять из ее названия, модель DCOM выросла из модели компонентных объектов (ComponentObjectModel, COM). COM — это технология, лежащая в основе различных версий операционных систем Windows от Microsoft, начиная с Windows 95. В противоположность CORBA, DCOM не является результатом деятельности комитета. К сожалению, то, что модель DCOM избежала обсуждения в комитете, повлекло за собой отсутствие хорошо спроектированной архитектуры с минимальным набором базовых элементов, из которых строятся компоненты и службы. Наоборот, в настоящее время DCOM — крайне запутанная система, в которой множество сходных действий выполняются множеством разных способов, и подобное сосуществование различных решений временами кажется невозможным.

Далее мы рассмотрим наиболее важные части DCOM, следуя тому же порядку изложения материала, которого мы придерживались при изучении CORBA.

Обзор

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

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

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

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

Объектная модель

Как фактически и все остальные распределенные системы объектов, DCOM соответствует модели удаленных объектов. Фактически объекты в DCOM могут размещаться как в одном процессе с клиентом, так и на одной машине с ним, а также в процессе, выполняемом на удаленной машине. Позже мы рассмотрим все эти варианты.

Как и в CORBA, объектная модель в DCOM построена на реализации интерфейсов. Грубо говоря, объект DCOM — это просто реализация интерфейса. Один объект может реализовывать одновременно несколько интерфейсов. Однако в отличие от CORBA в DCOM имеются только бинарные интерфейсы (binaryinterfaces). Такой интерфейс, в сущности, представляет собой таблицу с указателями на реализации методов, которые являются частью интерфейса. Разумеется, для определения интерфейса по-прежнему удобно использовать специальный язык определения интерфейса (IDL). В DCOM также имеется такой язык под названием MIDL (Microsoft IDL — язык IDL от Microsoft), при помощи которого генерируются бинарные интерфейсы стандартного формата.

Распределенные объекты

Одной из первых парадигм построения распределенных систем, был подход удаленного вызова процедур RPC (Remoteprocedurecall). Отличительной особенностью RPC семейства, является высочайшая степень прозрачности, достигающаяся за счет подстановок средой исполнения соответствующих клиентских и серверных заглушек, а также максимально полной информации об используемых типах данных. С развитием ООП, на базе RPC были разработаны технологии получившие название Распределенных Объектов (Distributedobjects). Основным их отличием от RPC, является использование заместителя (proxy), реализующего интерфейс удаленного серверного объекта. Назначение заместителя во многом аналогично RPC заглушке, это маршалинг аргументов при обращении к методам удаленного объекта, посылка сообщения удаленному объекту и демаршалинг результатов из ответных сообщений с последующим возвращением их клиенту.

DCOM - Distributed Component Object Model

DCOM (англ. Distributed COM) — расширение ComponentObjectModel для поддержки связи между объектами на различных компьютерах по сети.

Для вызова удалённого объекта параметры должны быть извлечены из стека, помещены в буфер и переданы через сеть. Процесс извлечения параметров и помещения их в буфер называется маршалинг. На сервере производится обратный процесс воссоздания стека, называемый демаршалинг, после чего вызывается требуемый объект. После завершения вызова производится маршалинг возвращаемого значения и выходных параметров и отправка их клиенту.

Для выполнения маршалинга и демаршалинга необходимо иметь точное описание метода, включая все типы данных и размеры массивов. Код, запускаемый на стороне клиента, называется «прокси», на стороне объекта – «стаб» и загружается библиотекой COM по необходимости.


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



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