Бөлісу құралы:


Перехват меж контекстных вызовов

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

Перехват вызовов между контекстами необходим, так как объекты в разных контекстах имеют разные требования во время выполнения. Это именно причина контекстов. COM+ перехватывает все ссылки на объекты, передаваемые в качестве параметров метода, и автоматически преобразует их в прокси-серверы, чтобы они были доступны в новом контексте.

При совместном использовании ссылок на объекты между границами контекста другими средствами (например, в глобальных переменных) всегда следует использовать CoMarshalInterface и CoUnmarshalInterface. Эти функции могут преобразовать ссылку на объект в прокси-сервер, доступный в другом контексте. Никогда не совместно использовать ссылку на необработанный объект через границы контекста.

Поведение вызовов в контексте может иметь нежелательные последствия в случае объектов, предоставляющих интерфейсы, которые нельзя маршалировать. В этом случае, скорее всего, вы хотите настаивать на том, что объект, который не может быть маршалирован, активируется только в контексте вызывающего объекта и никогда не в собственном контексте. Это можно сделать, выбрав параметр контекста вызывающего объекта на вкладке "Активация" страницы свойств компонента. (См. раздел Принудительное применение активации в контексте вызывающего объекта для пошаговые инструкции.)

Активация контекста