Разработка распределенных приложений в Microsoft.NET Framework




Архитектура среды NET Remoting - часть 2


Серверная сторона канала, в свою очередь, состоит как минимум из транспортной трубы, трубы форматирования и трубы диспетчеризации. Трубы форматирования и транспорта присутствуют на каждой стороне не более чем в одном экземпляре. Канал может содержать и другие трубы, которые оперируют с сообщением или полученным из него потоком. В первом случае трубы располагаются до трубы форматирования (на клиенте) и реализуют интерфейс IMessageSink. Такие трубы называют трубами сообщения (message sinks). Во втором случае трубы располагаются между трубами форматирования и транспорта, и называются трубами обработки потока (channel sinks). Они реализуют интерфейс IСlientChannelSink на клиенте или IServerChannelSink на сервере. Стандартная труба форматирования реализует интерфейсы и трубы потока, и трубы сообщения, а транспортная труба относится к трубам потока.
  • Последняя из труб в серверной части канала должна передать сообщение заглушке удаленного вызова, называемой диспетчером (реализуется методом ChannelServices.DispatchMessage) .
  • Конкретный набор труб, образующий канал Remoting, определяется используемым классом канала. Такой класс реализует интерфейсы IChannel, IChannelSender, IChannelReceiver и должен создавать последовательность труб на стороне клиента и/или сервера, как это будет показано далее в примерах. Среда Remoting сразу "из коробки" содержит три класса канала. Классы HttpChannel и TcpChannel работают с протоколами HTTP и TCP соответственно, а добавленный в .NET Framework 2.0 класс IpcChannel предназначен для эффективного локального взаимодействия процессов (IPC: inter process communication) через именованные каналы. В трубе форматирования любого из трех каналов может использоваться один из двух рассмотренных ранее классов форматирования: BinaryFormatter и SoapFormatter.

    Для передачи информации об объекте сервера и создания на клиенте "прозрачного" посредника используется особый класс System.Runtime.Remoting.ObjRef. При попытке сериализации и передачи по каналу маршализируемого по ссылке объекта используется рассмотренный ранее механизм сурогатных селекторов.


    Содержание  Назад  Вперед