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


Наследование ручных транзакций

Если объект с транзакцией BYOT в его контексте создает второй объект, подчиненный объект может наследовать транзакцию BYOT (если настроено наследовать транзакции). Первый объект, созданный с помощью шлюза BYOT, должен быть настроен на "требовать" или "поддерживать" транзакции. Последующие объекты в действии можно настроить на основе требований приложения.

Для автоматических транзакций среда выполнения COM+ не пытается зафиксировать транзакцию, пока корневой объект не указывает, что он готов (вызывая SetComplete перед возвратом из вызова). Пользователи должны знать, что транзакция BYOT может зафиксировать преждевременно (в том случае, что работа дочерних объектов не завершена), так как "корневой" не выполняется в среде выполнения COM+ и семантика фиксации не привязана к времени существования объекта. Как правило, пользователь должен заботиться о том, чтобы не нарушать границу синхронизации транзакции.

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