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


Основные понятия активации COM+ JIT

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

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

  • Использование службы активации COM+ JIT значительно упрощает модель программирования для клиента, так как клиенту не нужно думать о том, как он использует дорогостоящие серверные объекты и ресурсы сервера. Без активации JIT клиенты могут нанести значительный штраф, когда им часто нужно вызывать и освобождать объекты.

    Примечание.

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

     

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

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

Включение активации COM+ JIT

Вы можете включить службу активации COM+ JIT для компонента с помощью средства администрирования служб компонентов или Администратор istrative функций. Дополнительные сведения о том, как это сделать, см. в разделе "Включение активации JIT для компонента".

Активация COM+ JIT может взаимодействовать с другими службами COM+, например следующими:

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

Как активируется деактивация

COM+ деактивирует объект на основе состояния бита готовости в контексте объекта. Объект может использовать этот бит, чтобы сообщить о том, выполняется ли оно ( то есть готово к деактивации) во время определенного вызова метода. Дополнительные сведения см. в разделе "Настройка готового бита".

Использование свойства auto-Done

С помощью средства администрирования служб компонентов можно настроить метод, позволяющий автоматически деактивировать объект при возврате метода. (См. раздел Включение автоматического выполнения для метода для инструкций по настройке этого свойства.) Выбрав этот параметр, можно исключить повторяющиеся вызовы метода для голосования в транзакциях. Так как параметр по умолчанию для бита согласованности имеет значение True, если вы изменили бит выполнения на True, и вы не выполняете никаких действий для изменения этих параметров, IObjectContext::SetComplete вызывается автоматически после возврата метода.

Однако существует одно предупреждение об этом поведении: COM+ изучит HRESULT, который возвращает метод. Если это HRESULT указывает на сбой, бит согласованности имеет значение False, а результат совпадает с тем же результатом, что и при вызове IObjectContext::SetAbort.

Чтобы свести итоги, если вы выберете автоматическое выполнение для метода и не выполняете никаких действий, чтобы задать какие-либо биты, и если возвращается HRESULT(hr), то применяется следующее:

  • Если ВЫПОЛНЯЕТСЯ УСПЕШНО(hr), это так, как будто вы назвали SetComplete.
  • Если FAILED(hr), это так, как будто вы назвали SetAbort.

Использование IObjectControl для управления активацией объектов и деактивацией

Интерфейс IObjectControl можно реализовать, чтобы среда выполнения COM+ автоматически управляла деактивацией и повторной активацией для объектов. Когда объект реализует этот интерфейс, COM+ вызывает IObjectControl::D eactivate при деактивации объекта и IObjectControl::Activate при повторной активации объекта. Эти методы позволяют включить автоматическую инициализацию контекста для активации объекта и очистки состояния при деактивации.

Если вы используете активацию COM+ JIT, настоятельно рекомендуется реализовать IObjectControl. Дополнительные сведения см. в разделе "Пул объектов" и активация JIT-запросов COM+.

Без отслеживания состояния и активация JIT

Объекты транзакций обязательно без отслеживания состояния, так как невозможно предоставить общий доступ к состоянию через границу транзакции. Таким образом, вы будете использовать активацию JIT только в том случае, если объект не содержит состояния, которое будет потеряно при деактивации; в противном случае вы нарушаете изоляцию транзакций. Из-за шаблонов естественного использования транзакционных объектов — они выполняют некоторую единицу работы и освобождают объект при фиксации или прерывании транзакции — активация JIT и автоматические транзакции тесно связаны. Настройка объекта, требующего выполнения транзакций, включает автоматическую активацию JIT COM+.

Задачи JIT-активации COM+

Активация JIT для пула объектов и COM+

Транзакции и активация JIT COM+