Распределенные транзакции
Одним из основных достоинств среды COM+ является поддержка распределенных транзакций на базе координатора распределенных транзакций. Настройки транзакции компоненты COM+ влияют на настройки синхронизации и активации. Любая включенная настройка транзакций, отличная от Not supported, требует использования JIT‑активации и ограничивает выбор настройки синхронизации не более чем вариантами Required и Requires new. При активации объекта среда COM+ определяет необходимость использования транзакций в соответствии с таблицей 6.2
Таблица 6.2 Участие объекта COM+ в транзакции
Настройка транзакции компоненты COM+ | Создатель объекта участвует в транзакции | Создатель объекта не участвует в транзакции |
Не поддерживается (Not Supported) | Вне транзакции | Вне транзакции |
Поддерживается (Supported) | Транзакция создателя | Вне транзакции |
Требуется (Required) | Транзакция создателя | Новая транзакция |
Требуется новая (Requires new) | Новая транзакция | Новая транзакция |
Если при создании объекта обнаружена потребность в создании новой транзакции, среда COM+ создает ее с помощью координатора транзакций и данный объект считается корнем транзакции (рис. 6.2). Поскольку требующие транзакцию объекты используют активацию одного вызова, то транзакция не может существовать дольше, чем один вызов метода корневого объекта клиентом COM+. В транзакции могут участвовать службы, имеющие свой менеджер ресурсов, в частности MSMQ и MS SQL. Для многих ресурсов при необходимости можно создать свой компенсирующий менеджер ресурсов.
Рисунок 6.2. Транзакция COM+
Каждый из участвующих в транзакции объектов должен в конце выполнения своего метода сообщить об успешности транзакции или ее неудаче. В случае, если все объекты объявили об успешности транзакции, служба COM+ оповещает все участвующие в транзакции внешние службы о необходимости сделать произведенные в рамках транзакции изменения постоянными (рис. 6.3).
Рисунок 6.3. Успешное завершение транзакции COM+
Дата добавления: 2015-08-14; просмотров: 747;