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 с дополнительным типом данных, представляющим собой идентификатор объекта.
Клиент должен периодически подтверждать свою активность путём «пингования» сервера. Если период пингования истёк без получения «пинга», считается, что клиент завершил работу аварийно и все его ссылки на интерфейсы объекта уничтожаются.
Это заготовка статьи о Windows. Помогите Википедии, дополнив её. |
В статье не хватает ссылок на источники (см. рекомендации по поиску). |