Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПвИ / Конспект лекций.doc
Скачиваний:
224
Добавлен:
01.06.2015
Размер:
1.05 Mб
Скачать

Лекция 18. Введение в инфраструктуру Microsoft .Net Remoting

Microsoft .NET Remoting - расширяемая инфраструктура с широкими возможностями для бесшовного взаимодействия между объектами, которые находятся в разных AppDomain'ах, в разных процессах или даже на разных компьютерах. .NET Remoting представляет мощную и в то же время простую модель программирования и поддержку периода выполнения, благодаря чему удаленное взаимодействие становится прозрачными. В этой статье мы рассмотрим различные строительные блоки, образующие архитектуру Remoting, а также исследуем некоторые типичные сценарии применения .NET Remoting. Обзор по .NET Remoting см. в Microsoft .NET Remoting: A Technical Overview.

Объекты .Net Remoting

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

  • SingleCall-объекты SingleCall-объекты обслуживают один - и только один - входящий запрос. Они полезны, если вам нужны объекты, выполняющие строго определенный объем работы. От SingleCall-объектов обычно не требуется сохранения информации о состоянии, и сами по себе они не способны сохранять такую информацию между вызовами методов. Зато SingleCall-объекты можно настроить с учетом требований балансировки нагрузки.

  • Singleton-объекты Singleton-объекты обслуживают несколько клиентов и, следовательно, совместно используют данные, сохраняя информацию о состоянии между клиентскими вызовами. Они полезны, если вам нужно, чтобы одни и те же данные явно использовались несколькими клиентами, а также если издержки, связанные с созданием и поддержкой объектов, велики.

  • Объекты, активизируемые клиентом (CAO) Объекты, активизируемые клиентом (Client-activated objects, CAO), - это объекты на серверной стороне, активизируемые по запросу клиента. Способ активизации этих серверных объектов во многом аналогичен активизации соклассов в классической модели COM. Когда клиент с помощью оператора new отправляет запрос к серверному объекту, удаленному приложению посылается сообщение с запросом на активизацию. Затем сервер создает экземпляр запрашиваемого класса и возвращает ObjRef вызывающему клиентскому приложению. Далее на клиентской стороне по полученному ObjRef создается прокси, через который клиент будет вызывать методы удаленного объекта. Объекты, активизируемые клиентом, могут сохранять информацию о состоянии между вызовами методов для конкретного клиента, но не для разных клиентских объектов. Каждый вызов new возвращает прокси для независимого экземпляра типа, существующего на сервере.

Передача объектов по механизму .Net Remoting

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

  1. Как параметры методов. Пример: public int myRemoteMethod (MyRemoteObject myObj)

  2. Как возвращаемые значения методов. Пример: public MyRemoteObject myRemoteMethod(String myString)

  3. Как свойства или поля .NET-компонентов. Пример: myObj.myNestedObject

При передаче объектов с маршалингом по значению (Marshal By Value, MBV) из одного приложения в другое создается полная копия объекта.

При передаче объектов с маршалингом по ссылке (Marshal By Reference, MBR) из одного приложения в другое создается ссылка на объект. Когда удаленное приложение получает ссылку на объект (ObjRef), она преобразуется в "прокси", обеспечивающий доступ к исходному объекту.

Соседние файлы в папке ПвИ