Варианты маршалинга для объектов: 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-типам это не относится).
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
2.4.3. Варианты загрузки
2.4.3. Варианты загрузки Итак, на мой взгляд, выбор варианта загрузки производится следующим образом: • Если у вас установлена Windows NT или Windows 2000, то используйте NT Loader. • Если у вас стоит Windows 95 или Windows 98 на FAT16, и вы не хотите ставить программу-загрузчик из другой ОС или от
6.16 Варианты
6.16 Варианты Для одного или нескольких дополнительных вариантов доступно 40 специальных октетов в заголовке IP. Варианты датаграмм выбираются отсылающими их приложениями. Применяются они крайне редко. Список вариантов включает:? Strict Source Route (Точный маршрут от
14.9.3 Варианты TFTP
14.9.3 Варианты TFTP Улучшенный вариант TFTP разрешает согласование параметров через предварительные запросы чтения и записи. Его основная цель — позволить клиенту и серверу согласовывать между собой размер блока, когда он больше 512 байт (для увеличения эффективности
22.7.5 Варианты Destination
22.7.5 Варианты Destination Заголовок Destination Option (варианты точки назначения) обеспечивает сведения о точке (точках) назначения для многоадресной рассылки. В настоящее время для этого заголовка не специфицировано никаких вариантов, кроме полей заполнения. Формат заголовка
Вспомогательные средства для внутрипроцессного маршалинга
Вспомогательные средства для внутрипроцессного маршалинга Хотя фрагменты кода для WritePtr и ReadPtr из предыдущего раздела достаточно просто реализовать, большинство явных вызовов CoMarshalInterface будут использоваться для передачи интерфейсного указателя от одного потока к
Архитектура стандартного маршалинга
Архитектура стандартного маршалинга Как уже упоминалось ранее в этой главе, СОМ использует протокол ORPC для всех обращений между апартаментами. Это обстоятельство может представлять интерес с точки зрения архитектуры, но некоторые разработчики желают программировать
10.2.3. Ограниченное «глубокое копирование» в ходе маршалинга
10.2.3. Ограниченное «глубокое копирование» в ходе маршалинга В Ruby нет операции «глубокого копирования». Методы dup и clone не всегда работают, как ожидается. Объект может содержать ссылки на вложенные объекты, а это превращает операцию копирования в игру «собери палочки».Ниже
4. Варианты операций соединения
4. Варианты операций соединения Используя как основу рассмотренные ранее унарные операции выборки, проекции, переименования и бинарные операции объединения, пересечения, разности, декартова произведения и естественного соединения (все они в общем случае называются
Варианты сохранения проекта
Варианты сохранения проекта По умолчанию проект ArchiCAD сохраняется в формате PLN, но при этом в файл проекта записываются только ссылки на использованные в проекте библиотечные объекты, текстуры и фоновые рисунки. По этой причине при переносе файла проекта на другой
Варианты воспроизведения
Варианты воспроизведения Рассмотрим некоторые полезные особенности вывода воспроизводимого Проигрывателем изображения.Полноэкранный режим. Помимо использования окна предварительного просмотра Проигрывателя, изображение можно воспроизводить в полноэкранном
Варианты будущего
Варианты будущего Автор: Киви БердВ знаменитом спилберговском фильме «Особое мнение», где тщательно и со множеством технических подробностей обрисовано мрачноватое будущее человечества, были интересные детали, на которые мало кто обратил внимание. Всем, скажем,
13.8. Variations (Варианты)
13.8. Variations (Варианты) С помощью этой команды можно настраивать насыщенность, освещенность, а также цвета изображения (рис. 13.10). Кроме того, можно выбрать область воздействия (тени, средние тона и др.). Чтобы узнать, как будет выглядеть изображение после применения настройки,
Варианты установки Windows XP
Варианты установки Windows XP Инсталлировать операционную систему Windows XP можно несколькими способами.• В режиме обновления, поверх установленной на компьютере операционной системы Windows. В этом случае старая версия ОС удаляется, так как новая устанавливается в тот же
Улучшенные варианты
Улучшенные варианты Описанный механизм включает большинство случаев и достаточен для целей описания нашей книги. На практике полезны некоторые уточнения:[x]. Некоторые внешние программные элементы могут быть макросами. Они имеют вид подпрограмм в ОО-мире, но любой их
5.2. Варианты подключения
5.2. Варианты подключения Итак, мы разобрались, что такое Интернет, теперь нужно к нему подключиться. Подключением пользователей ко Всемирной компьютерной сети занимаются специальные компании — провайдеры. За определенную плату (увы, и в виртуальном мире коммунизм еще не