Архитектура СОМ. Маршалинг. Контексты исполнения компонентов

   
На этом шаге мы перечислим контексты исполнения серверов.

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

   
Передача данных через границы процесса называется маршалингом (marshaling). Из этого и
следующих шагов Вы узнаете о способах маршалинга - о том, как СОМ-компоненты передают и получают
данные методов предоставляемых ими интерфейсов.

   
СОМ-компонент выполняет одну из трех ролей:

  • сервера, встраиваемого в процесс (in-process server),
  • внешнего сервера (сервер за пределами данного процесса - out-of-process server) или
  • удаленного сервера (remote server).

   
На рисунке 1 показаны их характеристики и способы реализации.


Рис.1. Контексты исполнения СОМ-объектов

   
Сервер, встраиваемый в процесс, реализуется в виде DLL и выполняется в адресном пространстве того же
процесса, что и клиент. Такой СОМ-сервер более оперативно реагирует на запросы по сравнению с внешним
или удаленным сервером. Да и времени на их разработку требуется меньше - приходится писать меньше кода.
Однако, применяя этот тип сервера, Вы должны зарегистрировать копию СОМ-объекта на каждом компьютере,
где предполагается выполнять клиентское приложение.

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

   
Внешний СОМ-объект можно реализовать так, что он будет выполняться на другой машине. Такой объект
называется удаленным сервером (remote server). В этом случае обмен данными между серверным
и клиентским компьютерами происходит по сети. Характерное время отклика на запросы методов у такого сервера
существенно больше, причем этот показатель может быть нестабильным: время запуска метода (даже если это один и тот же метод)
значительно варьируется. В перегруженной сети клиентское приложение будет ждать ответа дольше. Код, создаваемый
для маршалинга параметров метода в локальный сервер, вполне годится для их передачи и на удаленный сервер.
В случае применения удаленного сервера достаточно иметь всего лишь один его экземпляр, загруженный и
зарегистрированный на серверной машине. Он сможет обслужить всех клиентов, нуждающихся в его методах.
Наличие только одного сервера существенно облегчает и упрощает процесс его модификации (например, изменение методов).

   
На следующем шаге мы рассмотрим технологии маршалинга.



Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий