Агенты и сообщения

Агенты и сообщения

Клиенты и объекты сервера взаимодействуют не напрямую, а через посредника, обычно называемого агентом (или proxy-модулем). Роль агента .NET заключается в создании для клиента иллюзии того, что он взаимодействует с запрошенным удаленным объектом в одном домене приложения. Чтобы создать такую иллюзию, агент предлагает интерфейс (члены, свойства, поля и т.д.), идентичный интерфейсу удаленного типа. С точки зрения клиента данный агент и является удаленным объектом. Однако "за кулисами" агент переправляет вызовы удаленному объекту.

Формально такой агент, вызываемый клиентом непосредственно, называется прозрачным агентом (transparent proxy). Этот объект, генерируемый средой CLR автоматически, несет ответственность за проверку того, что при вызове удаленного метода клиент получит нужное число параметров (и они будут нужного типа). Поэтому прозрачный агент можно интерпретировать, как фиксированный слой взаимодействия, который нельзя программно изменить или расширить.

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

public interface IMessage {

 IDictionary Properties { get; }

}

Как видите, интерфейс IMessage определяет единственное свойство (с именем Properties), которое обеспечивает доступ к коллекции, используемой для хранения предоставленных клиентом аргументов. После наполнения объекта сообщения содержимым средой CLR, он будет передан родственному типу, называемому реальным агентом (real proxy).

Реальный, агент – это сущность, которая фактически посылает объект сообщения в канал (понятие канала будет обсуждаться ниже). Реальный агент, который (в отличие от прозрачного агента) может быть расширен программистом, представляется базовым типом класса с именем RealProxy (что и следовало ожидать). Снова следует подчеркнуть, что среда CLR генерирует клиентскую реализацию реального агента для использования по умолчанию, которая вполне подойдет вам если не во всех, то в большинстве случаев. Но чтобы иметь представление о функциональных возможностях, предлагаемых абстрактным базовым классом RealProxy, изучите формальное определение этого типа.

public abstract class RealProxy: object {

 public virtual ObjRef CreateObjRef(Type requestedType);

 publiс virtual bool Equals(object obj);

 public virtual IntPtr GetCOMIUnknown(bool fIsMarshalled);

 public virtual int GetHashCode();

 public virtual void GetObjectData(SerializationInfo info, StreamingContext context);

 public Type GetProxiedType();

 public static object GetStubData(RеаlРrоxу rp);

 public virtual object GetTransparentProxy();

 public Type GetType();

 public IConstructionReturnMessage InitializeServerObject(IConstructionCallMessage ctorMsg);

 public virtual IMessage Invoke(IMessage msg);

 public virtual void SetCOMIUnknown(IntPtr i);

 public static void SetStubData(RealProxy rp, object stubData);

 public virtual IntPtr SupportsInterface(ref Guid iid);

 public virtual string ToString();

}

Если вы не заняты построением пользовательской реализации реального агента клиента, то единственным интересным для вас членом будет RealProxy.Invoke(). С помощью метода Invoke() сгенерированный средой CLR прозрачный агент в фоновом режиме передает форматированный объект сообщения типу RealProxy.

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

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

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

8.2. Сообщения

Из книги Самоучитель UML автора Леоненков Александр

8.2. Сообщения Как было отмечено выше, цель взаимодействия в контексте языка UML заключается в том, чтобы специфицировать коммуникацию между множеством взаимодействующих объектов. Каждое взаимодействие описывается совокупностью сообщений, которыми участвующие в нем


9.4. Сообщения

Из книги Архитектура операционной системы UNIX автора Бах Морис Дж

9.4. Сообщения Сообщения, как элементы языка LJML, уже рассматривались ранее при изучении диаграммы последовательности (см. главу 8). При построении диаграммы кооперации они имеют некоторые дополнительные семантические особенности. Сообщение на диаграмме кооперации


11.2.1 Сообщения

Из книги Человеческий фактор в программировании автора Константин Ларри Л

11.2.1 Сообщения С сообщениями работают четыре системных функции: msgget, которая возвращает (и в некоторых случаях создает) дескриптор сообщения, определяющий очередь сообщений и используемый другими системными функциями, msgctl, которая устанавливает и возвращает связанные с


54 Агенты изменения

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

54 Агенты изменения Одна рыба, сделав правильное движение в нужный момент, может изменить курс всего косяка. В группе, разрабатывающей программное обеспечение, успешность введения нового инструмента или улучшенного метода управления версиями часто зависит от


У6.4 Сообщения

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

У6.4 Сообщения Рассмотрите знакомую вам систему электронной почты. Определите в духе этой лекции абстрактный тип данных ПОЧТОВОЕ_СООБЩЕНИЕ. Включите в него не только функции-запросы, но и команды и


8.13.9 Сообщения Hello

Из книги Программирование КПК и смартфонов на .NET Compact Framework автора Климов Александр П.

8.13.9 Сообщения Hello Каждый маршрутизатор OSPF конфигурируется с уникальным идентификатором, использующимся в сообщениях. Обычно в качестве идентификатора применяют наименьшую часть IP-адреса этого маршрутизатора.Маршрутизатор периодически отправляет в многоадресной


17.3 Агенты новостей

Из книги Linux: Полное руководство автора Колисниченко Денис Николаевич

17.3 Агенты новостей Как и пользовательские агенты, позволяющие получать и отправлять почтовые сообщения, агенты новостей (news agent) разрешают пользователям подписываться на группы новостей, читать статьи из групп и публиковать собственные статьи в


20.2.2 Агенты

Из книги Русский справочник по Win32 API автора Сорока Тарас

20.2.2 Агенты Для обеспечения доступа к информации управляемая система должна иметь программный агент, который отвечает на запросы, выполняет изменения и выводит отчет о возникших проблемах. Одна или несколько станций управления (management station) посылают запросы и сообщения об


20.3.1 Прокси-агенты

Из книги Операционная система UNIX автора Робачевский Андрей М.

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


SMS-сообщения

Из книги Социальные сети. ВКонтакте, Facebook и другие… автора Леонтьев Виталий Петрович

SMS-сообщения Отправка SMS-сообщения с помощью новых возможностей тоже очень и очень проста. Эти сообщения весьма популярны у владельцев мобильных телефонов. Раньше для отсылки и приема SMSприходилось использовать неуправляемый код, очень сложный для восприятия неопытным


25.2. Сообщения

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

25.2. Сообщения Начнем с самого простого — отображения небольших текстовых сообщений. Для этой цели можно использовать два виджита — Infobox или Msgbox. Первый отличается от второго тем, что не ждет подтверждения пользователя о прочтении, а закрывается через некоторое время.


Сообщения

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

Сообщения WM_TIMER Сообщение WM_TIMER отправляется в очередь сообщений установившего таймер потока или соответствующей функции обратного вызова TimerProc по истечении интервала, заданного при установке таймера функцией SetTimer .WM_TIMER wTimerID = wParam ; // идентификатор таймера tmprc = ( TIMERPROC *)


Сообщения

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

Сообщения В подсистеме STREAMS все данные передаются в виде сообщений. С помощью сообщений передаются данные от приложений к драйверу и обратно. Сообщения используются для взаимодействия модулей между собой. Модули могут также генерировать сообщения для уведомления


Сообщения

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

Сообщения Слово «Статусы» мы уже кучу раз произнесли, да и про сообщения обмолвились. Пора разобраться с темой, даром что строчка Сообщения контактовском меню слева расположены ниже, чем Аудиозаписи и Видео. Но этим красавцам свой черед, а сейчас – о главном. Начнем с


Сообщения

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

Сообщения Пользователи Facebook могут обмениваться несколькими типами сообщения.Первый и самый распространенный – комментарий к публикациям на Стене: эту возможность вы получите, попав в список Друзей данного пользователя. Оставить комментарий можно с помощью ссылки