Маршалинг. Специальный маршалинг

   
На этом шаге мы рассмотрим специальный маршалинг.

   
В некоторых приложениях стандартный маршалинг не работает. В этом случае объект сервера может поддерживать
специальный маршалинг.

   
Для этого в своем сервере Вам придется реализовать интерфейс IMarshal. Использование специального
маршалинга исключает стандартный маршалинг. При этом СОМ требует, чтобы сервер самостоятельно
формировал пакет с данными для маршалинга и передавал его в контекст клиента. СОМ создает экземпляр
указанного объектом обработчика, который получает пакет и действует в качестве интеллектуального представителя
клиента, проводя для него демаршалинг.

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

  • Разделяемая память. В стандартном маршалинге данные всегда переносятся через границы между
    клиентом и сервером. Прибегнув к специальному маршалингу, Вы сможете выделить область разделяемой памяти,
    доступной как из клиента, так и из сервера, и пользоваться ею для передачи данных. Это позволит избежать
    излишнего копирования данных и повысить производительность.
  • Маршалинг по значению. В отличие от маршалинга по ссылке, этот тип маршалинга позволяет
    делать локальные копии объектов, так что все последующие запросы выполняются локально.
  • "Интеллектуальный" представитель. В зависимости от состояния внутреннего кэша представитель
    может самостоятельно принимать решение о необходимости обращения к удаленному серверу. Некоторые методы он
    выполняет самостоятельно в обход сервера. "Интеллектуальный" представитель также способен повысить производительность,
    обеспечивая поддержку асинхронных запросов. Для обработки запроса он, например, создает отдельный поток,
    который отошлет запрос и возвратит управление, как только сервер начнет его обрабатывать.
  • Выход за рамки стандартных потоковых моделей СОМ. Это npoисходит, когда Вам становятся
    тесными рамки стандартной потоковой модели.

   
Со следующего шага мы начнем рассматривать диспетчерские интерфейсы.



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

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