Создание распределенных приложение по технологии .Net Remoting

 

.NET Remoting — это технология коммуникаций между разными доменами приложе-

ний. Коммуникации между доменами приложений с помощью .NET Remoting могут происходить внутри одного процесса, между процессами в одной системе или между процессами в разных системах.

Для коммуникаций между клиентским и серверным приложением могут применяться

несколько различных технологий. Для программирования приложений можно исполь-

зовать сокеты или вспомогательные классы из пространства имен System.Net, которые

облегчают работу с протоколами, IP-адресами и номерами портов. В рамках этой технологии данные всегда должны передаваться по сети. Передаваемые данные могут быть оформлены в собственный специальный протокол, когда пакет интерпретируется сервером, так что сервер знает, какие методы должны быть вызваны. Придется не только иметь дело с передаваемыми данными, но также самостоятельно создавать потоки выполнения.

 

Используя веб-службы ASP.NET, можно отправлять сообщения по сети. Веб-службы

обеспечивают независимость от платформы. Кроме того, достигается слабая связь между клиентом и сервером, а это означает облегчение работы с версиями. Веб-службы ASP.NET

 

Благодаря .NET Remoting, всегда имеется слабая связь между клиентом и сервером, потому что ими разделяются объекты одних и тех же типов. В рамках .NET Remoting функциональность объектов CLR перемещается в методы, которые вызываются между разными доменами приложений.

 

Функциональность .NET Remoting может быть описана типами приложений и поддер-

живаемых протоколов, а также CLR Object Remoting.

 

CLR Object Remoting (удаленное взаимодействие объектов CLR) — важный аспект технологии .NET Remoting. С удаленными объектами могут использоваться все языковые структуры (такие как конструкторы, делегаты, интерфейсы, методы, свойства и поля).

 

Технология .NET Remoting расширяет функциональность объектов CLR на всю сеть.

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

 

Технология WCF предлагает такие средства веб-служб ASP.NET, как независимость от платформы, обеспечивая высокую производительность и гибкость .

Технология .NET Remoting имеет преимущество — это коммуникации между доменами приложений внутри процесса.

 

Технология MAF (System.AddIn), использует внутри себя .NET Remoting. И, конечно же, существует множество готовых решений .NET, основанных на .NET Remoting, которые ничего не выигрывают от переписывания в новой технологии.

Хотя протокол SOAP предлагается .NET Remoting, не следует полагать, что

этот протокол может применяться для обеспечения взаимодействия между

разными платформами. Стиль SOAP Document в .NET Remoting недоступен.

Технология .NET Remoting предназначена для приложений .NET на обеих сторо-

нах — на клиенте и сервере. .NET Remoting обладает исключительно гибкой архитектурой, которая может применяться с любыми типами приложений, использующим любую кодировку содержимого.

 

Применение SOAP и HTTP — лишь один из способов вызова удаленных объектов.

Транспортные каналы являются подключаемыми и могут легко заменяться. Вместе с

.NET 4 вы получаете каналы HTTP, TCP и IPC, представленные классами HttpChannel,

TcpChanneel и IpcChannel, соответственно. Можно строить транспортные каналы на

основе UDP, IPX, SMTP, механизма разделенной памяти и очередей сообщений — выбор полностью за вами.

 

Термин “подключаемый” (pluggable) часто применяется в .NET Remoting. Под-

ключаемость означает, что определенная часть спроектирована так, что мо-

жет быть заменена специальной реализацией.

 

Для транспортировки параметров вызовов метода используется полезная нагрузка

(payload). Кодировка этой полезной нагрузки также может быть заменена. Microsoft поставляет механизмы кодирования SOAP и двоичных данных. Можно использовать либо форматировщик SOAP с каналом HTTP, либо HTTP с двоичным форматировщиком. Разумеется, оба эти форматировщика могут использоваться с каналом TCP.

 

Хотя SOAP используется в .NET Remoting, следует помнить, что поддержива-

ется только стиль SOAP RPC, в то время как веб-службы ASP.NET поддержи-

вают как стиль DOC (по умолчанию), так и стиль RPC. В новых версиях SOAP

стиль RPC считается устаревшим.

 

Технология .NET Remoting не только позволяет применять серверную функциональ-

ность в каждом приложении .NET. Эту технологию можно также использовать повсеместно (независимо от того, строится консольное приложение, Windows-приложение, служба Windows или компонент COM+). Вдобавок .NET Remoting также является хорошей технологией для одноранговых (peer-to-peer) коммуникаций.

 

 

Объяснение терминов .NET

Технология .NET Remoting может применяться для обращения к объектам в другом домене. Эта технология всегда может использоваться там, где два объекта существуют внутри одного процесса, в разных процессах или на разных системах.

Удаленные сборки могут быть сконфигурированы для локальной работы в домене приложения или как часть удаленного приложения. Если сборка является частью удаленного приложения, вместо реального объекта клиент получает прокси для взаимодействия.

 

Прокси является представителем удаленного объекта в клиентском процессе, используемым клиентским приложением для вызова его методов. Когда клиент вызывает метод на прокси, тот пересылает сообщение в канал, связывающий его с удаленным объектом.

 

Приложения .NET обычно функционируют внутри домена приложений. Домен приложения может восприниматься как подпроцесс внутри процесса. Традиционно процессы использовались в изолированных границах. Межпроцессные коммуникации необходимы для обеспечения взаимодействия приложений друг с другом.

В .NET домен приложения — это новая безопасная область внутри процесса, потому что код MSIL безопасен в отношении типов и верифицируем.

Объекты, находящиеся в пределах одного домена приложений, могут взаимодействовать непосредственно. Прокси необходим для доступа к объектам в разных доменах приложений.

 

В следующем списке предлагается обзор ключевых элементов архитектуры .NET

Remoting.:

 

Удаленный объект — это объект, выполняющийся на сервере. Клиент не вызывает

методы этого объекта напрямую, а вместо этого использует прокси. В .NET легко

отличить удаленные объекты от локальных: любой класс, который унаследован от

MarshalByRefObject, никогда не покидает своего домена приложений. Клиент мо-

жет вызывать методы удаленного объекта через прокси.

 

Канал предназначен для коммуникаций между клиентом и сервером. У канала есть

серверная и клиентская части. В .NET Framework 4 предлагаются типы каналов, ко-

торые взаимодействуют через TCP, HTTP или IPC. Можно создать собственный спе-

циальный канал, который взаимодействует посредством другого протокола.

 

Сообщения посылаются на канал; они создаются для коммуникаций между клиентом

и сервером. Эти сообщения содержат информацию об удаленном объекте, именах

вызываемых методов и всех их аргументах.

 

Форматировщик определяет то, как сообщения передаются на канал. В .NET 4 доступен форматировщик SOAP и двоичный форматировщик. Форматировщик SOAP применяется для коммуникаций с веб-службами, которые не основаны на .NET Framework.

 

Двоичные форматировщики намного быстрее и могут эффективно использоваться

в среде корпоративной сети. Разумеется, можно создавать и собственные специаль-

ные форматировщики.

 

Поставщик форматировщиков используется для ассоциации форматировщика с каналом. При создании канала можно указать используемого поставщика форматировщиков, а это, в свою очередь, определяет форматировщик, применяемый для передачи данных в канал.

 

Клиент вызывает методы на прокси, а не на удаленном объекте. Существуют два

типа прокси: прозрачный прокси (transparent proxy) и реальный прокси (real proxy). Для клиента прозрачный прокси выглядит как удаленный объект. На прозрачном про-

кси клиент может вызывать методы, реализованные удаленными объектами. В свою

очередь, прозрачный прокси вызывает метод Invoke() на реальном прокси. Метод

Invoke() использует приемник сообщений (message sink) для передачи сообщения

в канал.

 

Приемник сообщений, или просто приемник — это объект-перехватчик. Перехватчики

используются как клиентом, так и сервером. Приемник ассоциирован с каналом.

Реальный прокси использует приемник сообщений для передачи сообщения в ка-

нал, так что приемник может осуществить какое-то вмешательство перед тем, как

сообщение поступит в канал. В зависимости от места применения, его называют

приемником агентов (envoy sink), приемником серверного контекста, приемником

объектного контекста и так далее.Глава 54. Технология .NET Remoting 5

 

Клиент может использовать активатор для создания удаленного объекта на сервере

или получения прокси активизированного на сервере объекта.

RemotingConfiguration — это служебный класс для конфигурирования удаленных

серверов и клиентов. Он применяется либо для чтения конфигурационных файлов,

либо для динамического конфигурирования удаленных объектов.

ChannelServices — это служебный класс, используемый для регистрации каналов с

последующим направлением сообщений в них.

На рис. 54.1 показана концептуальная картина взаимодействия всего перечисленного


 

 

 
 

 

 


в