Контекст объекта COM+
Для каждого объекта транзакции сервер транзакций автоматически создает специальный объект, который носит название объект контекста транзакции или контекст объекта COM+. Функциональность контекста обеспечивается интерфейсом IobjectContext.
Два метода интерфейса определяют способ выхода объекта из транзакции.
Метод SetComplete сообщает транзакции, что он готов к завершению своей работы в транзакции.
Использование метода SetAbort означает, что исполнение кода объекта привело к возникновению обстоятельств, препятствующих успешному завершению транзакции.
После использования любого из этих двух методов объект завершает свое участие в транзакции.
Методы EnableCommit и DisableCommit сообщают о текущем состоянии объекта. Метод EnableCommit сообщает, что объект позволяет завершить транзакцию, хотя его функционирование еще не завершено.
Рис. 1. Роль контекста объекта COM+
Вызов метода DisableCommit показывает, что в настоящий момент текущее состояние объекта не позволяет завершить транзакцию. При попытке завершить транзакцию после вызова этого метода, транзакция будет прервана.
При помощи перечисленных методов объект контекста обеспечивает среду COM+ информацией о состоянии объекта транзакции.
Например, распределитель ресурсов может использовать контекст объекта COM+ для обеспечения сервисов на основе транзакций. Пусть объект выполняется внутри транзакции, которая зарезервировала соединение с базой данных, используя провайдер ADO. Это соединение автоматически организует транзакцию. Все изменения в базе данных, использующие такое соединение, становятся частью транзакции и затем либо принимаются, либо откатываются. Дополнительно разработчики могут использовать несколько вспомогательных методов интерфейса IobjectContext.