Книга: C# для профессионалов. Том II

Контексты

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

При создании компонентов COM+ использовались контексты COM+. Контексты в .NET являются очень похожими. Как уже было сказано, один процесс может иметь несколько доменов приложений. Домен приложения является чем-то типа подпроцесса с границами безопасности и может иметь различные контексты. Контекст используется для группирования объектов с аналогичными требованиями выполнения. Контексты состоят из множества свойств и используются для перехватывания: когда к ограниченному контекстом объекту обращаются из другого контекста, перехватчик может сделать некоторую работу, прежде чем вызов достигнет объекта.

Класс, который выводится из MarsnalByRefObject, ограничен доменом приложения. Вне домена приложения требуется прокси для доступа к объекту. Класс, который выводится из ContextBoundObject ограничен контекстом. Вне контекста для доступа к объекту требуется прокси. Ограниченные контекстом объекты могут иметь атрибуты контекста, объект без таких атрибутов создается в контексте создателя. Ограниченный контекстом объект с атрибутами контекста создается в новом контексте или в контексте создателя, если атрибуты являются совместимыми

Чтобы понять контексты, необходимо знать некоторые термины:

? Создание домена приложения приводит к возникновению контекста по умолчанию в этом домене. Если вы возьмете экземпляр нового объекта, которому требуются другие свойства контекста, в соответствии с ними создастся новый контекст.

Атрибуты контекста могут присваиваться классам, производным из ContextBoundObject. Можно создать класс специального атрибута, реализуя интерфейс IContextAttribute. .NET Framework имеет два класса атрибутов контекста: SynchronizationAttribute и ThreadAffinityAttribute.

? Атрибуты контекста определяют свойства контекста, необходимые объекту. Класс свойства контекста реализует интерфейс IContextProperty. Активные свойства предоставляют приемники сообщений в цепочку вызовов. Класс ContextAttribute, который может использоваться как базовый для специальных атрибутов, реализует как IContextProperty, так и IContextAttribute.

Приемник сообщений является перехватчиком вызова метода. При этом свойства помогают работе приемников сообщений.

Оглавление книги


Генерация: 0.705. Запросов К БД/Cache: 2 / 0
поделиться
Вверх Вниз