Interested Article - DCOM

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

Принцип работы

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

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

Для выполнения маршалинга и демаршалинга необходимо иметь точное описание метода, включая все типы данных и размеры массивов. Для описания используется язык описания интерфейсов (IDL), входящий в стандарт DCE RPC . Полученные файлы описания компилируются специальным компилятором IDL в исходный код на языке Си , производящий маршалинг и демаршалинг для указанных интерфейсов . Код, запускаемый на стороне клиента, называется «прокси», на стороне объекта – « стаб », и загружается библиотекой COM по необходимости.

Объектный RPC

Протокол DCOM, известный как объектный RPC (ORPC), является расширением протокола DCE RPC. ORPC использует стандартные пакеты RPC с дополнительной, необходимой для DCOM информацией. Заголовок вызова содержит идентификатор указателя интерфейса (IPID), который используется для идентификации необходимого интерфейса необходимого объекта на сервере, а параметры начинаются с дополнительного неявного аргумента.

Данные в пакете ORPC передаются в стандартном формате NDR с дополнительным типом данных, представляющим собой идентификатор объекта.

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

Same as DCOM