Public interface IMessage

{

IDictionary Properties { get; }

}

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

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

public abstract class RealProxy: object

{

public virtual ObjRef CreateObjRef(Type requestedType);

public 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(RealProxy 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 (). Дело в том, что сгенерированный CLR прозрачный прокси передает объект форматированного сообщения в тип реального прокси (RealProxy) именно через метод Invoke ().


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: