Варианты маршалинга для объектов: MBR и MBV

Варианты маршалинга для объектов: MBR и MBV

В рамках платформы .NET вы имеете на выбор два варианта того, как предоставить удаленный объект клиенту. Упрощенно говоря, маршалинг описывает правила передачи удаленного объекта из одного домена приложения в другой. При разработке объекта, предусматривающего удаленное использование, вы можете выбрать либо семантику MBR (marshal-by-reference – маршалинг по ссылке), либо семантику MBV (marshal-by-value – маршалинг по значению). Их различие заключается в следующем.

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

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

При использовании типа, относящегося к MBR-объектам, среда CLR обеспечит создание в домене приложения клиента прозрачного и реального агентов, в то время как сам MBR-объект будет оставаться в домене приложения сервера. При вызове методов удаленного типа клиентом система удаленного взаимодействия .NET (схема которой описана выше) активизируется, чтобы выполнить задачи упаковки, отправки и получения информации при обмене данными через границы доменов приложений. Для этого MBR-объекты имеют ряд свойств, "простирающихся" за рамки их физического расположения. Вы увидите, что MBR-объекты имеют различные опции конфигурации, относящиеся к их активизации и управлению циклом существования. В противоположность этому, MBV-объекты представляют собой локальные копии удалённых объектов (использующие протокол сериализации .NET, который был рассмотрен в главе 17). MBV-объекты имеют намного меньше опций конфигурации, поскольку их цикл существования контролируется непосредственно клиентом. Подобно любому другому объекту .NET, после того как клиент освободит все ссылки на MBV-тип, этот тип становится потенциальным объектом внимания для сборщика мусора. Поскольку MBV-типы являются локальными копиями удаленных объектов, процесс вызова клиентом членов соответствующего типа, вообще говоря, не предполагает никакой сетевой активности.

Следует понимать, что вполне естественным для сервера является поддержка доступа к множеству MBR- и MBV-типов. Вы можете также догадаться, что MBR-типы обычно поддерживают методы, возвращающие различные MBV-типы, что, в общем-то, напоминает автоматизированное предприятие, где один объект создает и выпускает другие связанные объекты. Здесь возникает следующий вопрос: как сконфигурировать пользовательский тип класса для использования в виде MBR-или MBV-объекта?

Конфигурация MBV-объекта

Процесс конфигураций объекта для использования в виде MBV-типа абсолютно аналогичен процессу конфигурации объекта для сериализации. Просто объявите соответствующий тип с атрибутом [Serializable].

[Serializable]

public class SportsCar {…}

Конфигурация MBR-объекта

MBR-объекты не маркируются специальным атрибутом .NET, а получаются (явно или неявно) из базового класса System.MarshalByRefObject.

public class SportsCarFactory: MarshalByRefObject {…}

Формально тип MarshalByRefObject определяется следующим образом.

public abstract class MarshalByRefObject: object {

 public virtual ObjRef CreateObjRef(Type requestedType);

 public virtual bool Equals(object obj);

 public virtual int GetHashCode();

 public virtual object GetLifetimeService();

 public Type GetType();

 public virtual object InitializeLifetimeService();

 public virtual string ToString();

}

Функциональные возможности, наследуемые от System.Object, вполне понятны, а роль остальных членов описана в табл. 18.2.

Таблица 18.2. Основные члены System.MarshalByRefObject

Член Описание
CreateObjRef() Создает объект, содержащий всю информацию, необходимую для генерирования агента, который будет использоваться для взаимодействия с удаленным объектом
GetLifetimeServices() Возвращает текущий сервис-объект, контролирующий политику цикла существования для данного экземпляра
InitializeLifetimeServices() Генерирует сервис-объект для контроля политики цикла существования данного экземпляра

Можно сказать, что суть типа MarshalByRefObject заключается в определении членов, которые затем могут переопределяться для того, чтобы программно управлять циклом существования MBR-объекта (подробнее об управлении циклом существования объектов будет говориться в этой главе позже).

Замечание. То, что вы сконфигурировали тип в виде MBV- или MBR-объекта, совсем не означает, что этот объект следует использовать только в приложении удаленного взаимодействия, а означает только то, что этот объект можно использовать в таком приложении. Например, тип System.Windows.Forms.Form является потомком MarshalByRefObject. Поэтому при удаленном доступе он реализуется как MBR-тип, а в других случаях он будет обычным локальным объектом в домене приложения клиента.

Замечание. Как следствие предыдущего замечания обратим внимание на то, что если тип .NET не предполагает сериализацию и в его цепочке наследования нет MarshalByRefObject, то такой тип может активизироваться и использоваться только в его исходном домене приложения, т.е, такой тип является контекстно-связанным (см. главу 13).

Теперь, когда вы четко понимаете суть различий между MBR- и MBV-типами, давайте рассмотрим некоторые проблемы, специфичные для MBR-типов (к MBV-типам это не относится).

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Вспомогательные средства для внутрипроцессного маршалинга

Из книги Сущность технологии СОМ. Библиотека программиста автора Бокс Дональд

Вспомогательные средства для внутрипроцессного маршалинга Хотя фрагменты кода для WritePtr и ReadPtr из предыдущего раздела достаточно просто реализовать, большинство явных вызовов CoMarshalInterface будут использоваться для передачи интерфейсного указателя от одного потока к


Архитектура стандартного маршалинга

Из книги Журнал «Компьютерра» № 20 от 29 мая 2007 года автора Журнал «Компьютерра»

Архитектура стандартного маршалинга Как уже упоминалось ранее в этой главе, СОМ использует протокол ORPC для всех обращений между апартаментами. Это обстоятельство может представлять интерес с точки зрения архитектуры, но некоторые разработчики желают программировать


Варианты будущего

Из книги Linux для пользователя автора Костромин Виктор Алексеевич

Варианты будущего Автор: Киви БердВ знаменитом спилберговском фильме «Особое мнение», где тщательно и со множеством технических подробностей обрисовано мрачноватое будущее человечества, были интересные детали, на которые мало кто обратил внимание. Всем, скажем,


2.4.3. Варианты загрузки

Из книги Базы данных: конспект лекций автора Автор неизвестен

2.4.3. Варианты загрузки Итак, на мой взгляд, выбор варианта загрузки производится следующим образом: • Если у вас установлена Windows NT или Windows 2000, то используйте NT Loader. • Если у вас стоит Windows 95 или Windows 98 на FAT16, и вы не хотите ставить программу-загрузчик из другой ОС или от


4. Варианты операций соединения

Из книги Железо ПК [Популярный самоучитель] автора Пташинский Владимир

4. Варианты операций соединения Используя как основу рассмотренные ранее унарные операции выборки, проекции, переименования и бинарные операции объединения, пересечения, разности, декартова произведения и естественного соединения (все они в общем случае называются


Варианты установки Windows XP

Из книги Pinnacle Studio 11 автора Чиртик Александр Анатольевич

Варианты установки Windows XP Инсталлировать операционную систему Windows XP можно несколькими способами.• В режиме обновления, поверх установленной на компьютере операционной системы Windows. В этом случае старая версия ОС удаляется, так как новая устанавливается в тот же


Варианты воспроизведения

Из книги ArchiCAD. Начали! автора Орлов Андрей Александрович

Варианты воспроизведения Рассмотрим некоторые полезные особенности вывода воспроизводимого Проигрывателем изображения.Полноэкранный режим. Помимо использования окна предварительного просмотра Проигрывателя, изображение можно воспроизводить в полноэкранном


Варианты сохранения проекта

Из книги Основы объектно-ориентированного программирования автора Мейер Бертран

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


Улучшенные варианты

Из книги TCP/IP Архитектура, протоколы, реализация (включая IP версии 6 и IP Security) автора Фейт Сидни М

Улучшенные варианты Описанный механизм включает большинство случаев и достаточен для целей описания нашей книги. На практике полезны некоторые уточнения:[x]. Некоторые внешние программные элементы могут быть макросами. Они имеют вид подпрограмм в ОО-мире, но любой их


6.16 Варианты

Из книги Программирование на языке Ruby [Идеология языка, теория и практика применения] автора Фултон Хэл

6.16 Варианты Для одного или нескольких дополнительных вариантов доступно 40 специальных октетов в заголовке IP. Варианты датаграмм выбираются отсылающими их приложениями. Применяются они крайне редко. Список вариантов включает:? Strict Source Route (Точный маршрут от


14.9.3 Варианты TFTP

Из книги С компьютером на ты. Самое необходимое автора Егоров А. А.

14.9.3 Варианты TFTP Улучшенный вариант TFTP разрешает согласование параметров через предварительные запросы чтения и записи. Его основная цель — позволить клиенту и серверу согласовывать между собой размер блока, когда он больше 512 байт (для увеличения эффективности


22.7.5 Варианты Destination

Из книги Быстрые деньги в Интернете [50 способов заработать, сидя дома у компьютера] автора Парабеллум Андрей Алексеевич

22.7.5 Варианты Destination Заголовок Destination Option (варианты точки назначения) обеспечивает сведения о точке (точках) назначения для многоадресной рассылки. В настоящее время для этого заголовка не специфицировано никаких вариантов, кроме полей заполнения. Формат заголовка


10.2.3. Ограниченное «глубокое копирование» в ходе маршалинга

Из книги Цифровая фотография. Трюки и эффекты автора Гурский Юрий Анатольевич

10.2.3. Ограниченное «глубокое копирование» в ходе маршалинга В Ruby нет операции «глубокого копирования». Методы dup и clone не всегда работают, как ожидается. Объект может содержать ссылки на вложенные объекты, а это превращает операцию копирования в игру «собери палочки».Ниже


5.2. Варианты подключения

Из книги автора

5.2. Варианты подключения Итак, мы разобрались, что такое Интернет, теперь нужно к нему подключиться. Подключением пользователей ко Всемирной компьютерной сети занимаются специальные компании — провайдеры. За определенную плату (увы, и в виртуальном мире коммунизм еще не


13.8. Variations (Варианты)

Из книги автора

13.8. Variations (Варианты) С помощью этой команды можно настраивать насыщенность, освещенность, а также цвета изображения (рис. 13.10). Кроме того, можно выбрать область воздействия (тени, средние тона и др.). Чтобы узнать, как будет выглядеть изображение после применения настройки,