Поделиться через


Принудительное применение активации в контексте по умолчанию

Настроенный COM-компонент обычно активируется в своём контексте; то есть COM+ ссылается на сведения каталога компонента, чтобы предоставить настроенные службы. Однако можно активировать настроенный компонент в контексте по умолчанию. Базовый COM-компонент — зарегистрированный компонент, не имеющий сведений о каталоге COM+, обычно активируется в контексте по умолчанию.

Активация COM-компонента в контексте по умолчанию обеспечивает три основных преимущества производительности, как показано ниже.

  • Вы сохраняете системные ресурсы путем ограничения количества созданных контекстов.
  • Вы повышаете производительность, ограничивая количество межконтекстных вызовов. Поскольку вызовы между контекстами требуют маршалинга, COM-объект, активированный в контексте по умолчанию, может гораздо быстрее вызывать другие объекты в том же контексте. Производительность в этом случае (вызовов в том же контексте) аналогична вызову подпрограммы.
  • Старые приложения COM можно импортировать в COM+ и запустить их без проблем. Например, у вас может быть несколько старых COM-приложений, реализованных в соответствии с предположением о том, что можно было передавать ссылки на объекты в квартире без маршалинга ссылок. Эти COM-приложения не работают при импорте в COM+, так как ссылки на объекты передаются через границы контекста. Однако можно запустить этот тип приложения COM при импорте, если вы используете средство администрирования служб компонентов, чтобы пометить все классы в приложении как необходимо активировать в контексте по умолчанию.

Основным недостатком активации настроенного компонента в контексте по умолчанию является то, что COM+ не предоставляет ни одной из настроенных служб компонента. Существует компромисс между улучшенной производительностью и возможностью использования служб COM+.

Например, предположим, что компонент COM не требует каких-либо служб COM+ (например, Транзакции, Активация JIT, События, Компоненты очередей, Синхронизацияили Пул объектов) и что компонент выполняет ряд вызовов другим COM-компонентам, которые могут быть активированы в контексте по умолчанию. В этом случае рекомендуется активировать вызывающий компонент в контексте по умолчанию.

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

Принудительная активация в контексте по умолчанию

  1. В области деталей средства администрирования служб компонентов щелкните правой кнопкой мыши компонент (расположенный в папке Компоненты любого выбранного приложения COM+), который вы хотите активировать в контексте по умолчанию, а затем щелкните Свойства.

  2. В диалоговом окне свойств компонента щелкните на вкладку «Активация».

  3. Выберите флажок "Должен быть активирован в стандартном контексте".

  4. Нажмите кнопку ОК.

Заметка

При запуске настроенного компонента в контексте по умолчанию COM+ не активирует какие-либо настроенные службы для этого компонента. Эти службы снова становятся доступными, если снять флажок Должен быть активирован в контексте по умолчанию, а затем запустить настроенный компонент в его собственном контексте.

 

Концепции активации "Just-in-Time" COM+

Обеспечение активации в контексте вызывающего