Windows - статьи

       

Активизация Just-in-time


Способность объекта быть деактивированным и повторно активированным, пока клиент сохраняет ссылку на него, называется активизацией Just-in-time.

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

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

Объект создается в неактивном состоянии и становится активным только после запроса клиента.

Когда объект становится неактивным, среда уничтожает все ресурсы объекта, в том числе, например, соединение к базе данных.

Объект COM+ становится неактивным при возникновении следующих событий:

  • Вызов методов SetComplete или SetAbort интерфейса IobjectContext. Если объект вызывает метод SetComplete, когда он успешно завершил свою работу и нет необходимости сохранять внутреннее состояние объекта для следующего вызова клиента. Если объект вызывает SetAbort, указывая на невозможность успешного завершения своей работы и отсутствие необходимости сохранения состояния объекта. После чего объект возвращается в состояние предшествующее этой транзакции. При нормальной реализации stateless-объекта деактивизация происходит после вызова каждого метода.
  • Транзакция сохраняется либо прерывается. Затем объект также деактивизируется. Среди этих объектов могут продолжить свое существование только те, что имеют ссылку на клиентов за пределами данной транзакции. Последующий вызов этих объектов повторно активирует их и служит причиной для выполнения в следующей транзакции.
  • Последний клиент освобождает объект. При этом объект деактивизируется и контекст объекта тоже освобождается.



Содержание раздела