Введение в среду NET Remoting
В отличие от других промежуточных сред, рассматриваемых в данном курсе, среда .NET Remoting создавалась специально для платформы .NET. Среда Remoting является универсальным средством доступа к удаленным объектам, которое может быть приспособлено к широкому классу задач взаимодействия компонент распределенного приложения. Благодаря своей расширяемой архитектуре среда Remoting может быть доработана для использования с практически любыми каналами передачи данных. Уже со штатными средствами область применения среды Remoting охватывает как реализацию публичных веб служб в интернете на основе протокола SOAP, так и высокоскоростной обмен в доверенной сети на основе бинарного форматирования (рис. 8.1).
Рис. 8.1. Различные сценарии использования среды Remoting
Кроме использования в качестве самостоятельной промежуточной среды, .NET Remoting также используется для организации взаимодействия .NET Framework и среды COM+ в рассмотренной ранее промежуточной среде .NET Enterprise Services.
С точки зрения среды Remoting, все классы объектов среды CLR делятся на три вида.
-
Классы, маршализируемые по значению. Объекты этих классов могут копироваться между доменами приложений, если для них определены операции сериализации и десериализации. В результате десериализации создается копия объекта, не связанная с его оригиналом. Следует отметить, что сериализация и десериализация некоторых объектов может быть осуществлена не со всеми классами форматирования, как указано в теме о сериализации.
-
Классы, маршализируемые по ссылке. Такие классы наследуются от класса System.MarshalByRefObject. Объекты этих классов не покидают свой домен приложения, но на стороне клиента создается посредник, позволяющий осуществлять удаленный доступ к объекту. Именно экземпляры таких классов могут использоваться как удаленные объекты при помощи среды Remoting. Remoting поддерживает все три вида удаленных объектов: объекты единственного вызова, единственного экземпляра и объекты, активируемые по запросу клиента.
-
Немаршализируемые классы, а так же классы без определенной процедуры сериализации или отмеченные, как несериализуемые.
Объекты этих классов недоступны вне своего домена приложения. Это, в частности, касается и классов исключений – выбрасываемые на сервере 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).
Содержание раздела