Серверы вне процесса

Для того, чтобы с интерфейсами можно было работать через границы процессов необходимо следующее:

§  Процесс должен иметь возможность вызывать функцию в другом процессе;

§  Процесс должен иметь возможность передавать другому процессу данные;

§  Клиент не должен беспокоиться о том, является ли компонент сервером внутри или вне процесса.

Существуют различные методы межпроцессорной коммуникации:

§  DDE;

§  именованные каналы;

§  разделяемая память;

§  локальный вызов процедуры (LPC) (используется в СОМ).

LPC это средство для связи между разными процессами на одной и той же машине, построенное на основе удаленного вызова процедуры (RPC).

Стандарт RPC определен OSF (Open Software Foundation) в спецификации DCE (Distributed Computing Environment) RPC.

RPC обеспечивает коммуникацию между процессами на разных машинах с помощью разнообразных сетевых протоколов. DCOM использует RPC для связи по сети.

LPC – это механизм, в котором вызовы процедур реализуются операционной системой (которая знает соответствие физических адресов и логических адресов памяти процессов).

Маршалинг – процесс передачи (копирования) параметров из адресного пространства клиента в адресное пространство компонента (ЕХЕ-модуля). Демаршалинг – процесс передачи параметров компоненту.

Пр передачи параметров:

§  для процессов расположенных на одной машине достаточно простого копирования данных;

§  для процессов расположенных на разных машинах дополнительно следует преобразовать данные в стандартный формат (учитывая межмашинные различия).

Механизм LPC способен скопировать данные, но ему недостаточно информации из заголовочного файла. Например, указатели на структуры следует обрабатывать иначе, чем целые числа.

Маршалинг указателя – это копирование в другой процесс структуры, на которую он указывает.

Если указатель – это указатель на интерфейс, то область памяти на которую он указывает копироваться не должна.

Маршалинг компонента реализуется интерфейсом IMarshal.

При создании компонента COM запрашивает у компонента этот интерфейс и вызывает функции-члены этого интерфейса для маршалинга и демаршалинга параметров до и после вызова функций.

Библиотека СOM реализует стандартную версию интерфейса IMarshal.

 

Вы можете следить за любыми ответами на эту запись через RSS 2.0 ленту. Вы можете оставить ответ, или trackback с вашего собственного сайта.

Оставьте отзыв

XHTML: Вы можете использовать следующие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

 
Rambler's Top100