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

       

Введение в среду NET Remoting


В отличие от других промежуточных сред, рассматриваемых в данном курсе, среда .NET Remoting создавалась специально для платформы .NET. Среда Remoting является универсальным средством доступа к удаленным объектам, которое может быть приспособлено к широкому классу задач взаимодействия компонент распределенного приложения. Благодаря своей расширяемой архитектуре среда Remoting может быть доработана для использования с практически любыми каналами передачи данных. Уже со штатными средствами область применения среды Remoting охватывает как реализацию публичных веб служб в интернете на основе протокола SOAP, так и высокоскоростной обмен в доверенной сети на основе бинарного форматирования (рис. 8.1).


Рис. 8.1.  Различные сценарии использования среды Remoting

Кроме использования в качестве самостоятельной промежуточной среды, .NET Remoting также используется для организации взаимодействия .NET Framework и среды COM+ в рассмотренной ранее промежуточной среде .NET Enterprise Services.

С точки зрения среды Remoting, все классы объектов среды CLR делятся на три вида.

  1. Классы, маршализируемые по значению. Объекты этих классов могут копироваться между доменами приложений, если для них определены операции сериализации и десериализации. В результате десериализации создается копия объекта, не связанная с его оригиналом. Следует отметить, что сериализация и десериализация некоторых объектов может быть осуществлена не со всеми классами форматирования, как указано в теме о сериализации.
  2. Классы, маршализируемые по ссылке. Такие классы наследуются от класса System.MarshalByRefObject. Объекты этих классов не покидают свой домен приложения, но на стороне клиента создается посредник, позволяющий осуществлять удаленный доступ к объекту. Именно экземпляры таких классов могут использоваться как удаленные объекты при помощи среды Remoting. Remoting поддерживает все три вида удаленных объектов: объекты единственного вызова, единственного экземпляра и объекты, активируемые по запросу клиента.
  3. Немаршализируемые классы, а так же классы без определенной процедуры сериализации или отмеченные, как несериализуемые.
    Объекты этих классов недоступны вне своего домена приложения. Это, в частности, касается и классов исключений – выбрасываемые на сервере Remoting исключения должны маршализироваться по значению для передачи клиенту.
Таким образом, среда Remoting является средством поддержки удаленных вызовов между доменами приложений CLR. В отличие от технологий MSMQ и COM+, среда Remoting не привязана жестко к каким либо службам операционной системы Microsoft Windows. Благодаря этому ответственные за реализацию среды Remoting пространства имен являются стандартизированной частью CLI, в отличие от пространств System.EnterpriseServices и System.Messaging. Таким образом, одним из достоинств Remoting является переносимость как между различными реализациями CLI фирмы Microsoft (.NET Framework, .NET Compact Framework), а также независимыми реализациями CLI (в настоящий момент к ним относятся Mono Project и DotGNU Portable.NET).
Реализация промежуточной среды Remoting только силами исполняемой среды CLI привела и к определенным недостаткам. Возможности Remoting как промежуточной среды достаточно скромны по сравнению со средой Enterprise Services. Remoting не имеет аналогов большинства сервисов среды COM+, в первую очередь это касается распределенных транзакций. В самой среде Remoting отсутствуют так же какие либо средства обеспечения безопасности, однако эта проблема может быть решена сервером носителем среды Remoting, в роли которого может выступать служба Internet Information Services (IIS).

Содержание раздела