Принести собственную транзакцию (BYOT)
BYOT позволяет создать компонент, который использует или наследует внешнюю транзакцию. То есть компонент, который еще не имеет связанной транзакции, может получить транзакцию. В настоящее время транзакции MTS являются автоматическими, и то, находится ли экземпляр компонента в транзакции, определяется во время его создания. Атрибуты транзакций компонента и его создателя определяют, какая транзакция связана с определённым экземпляром. Во всех случаях MTS управляет длительностью транзакций. COM+ расширяет это, чтобы разрешить настройку произвольной предварительно существующей транзакции DTC или TIP в качестве свойства транзакции контекста нового компонента. Это позволяет настроить компоненты, связанные с транзакциями, время существования которых контролируется монитором TP, OTS или СУБД.
Заметка
Транзакции BYOT должны использоваться с осторожностью. В некоторых ситуациях они могут привести к тому, что транзакция будет охватывать несколько доменов синхронизации, то есть они допускают параллелизм при выполнении транзакции, вызывая условие дедлока. Автоматические транзакции, а не транзакции BYOT, являются предпочтительной моделью программирования для записи бизнес-компонентов.
Интерфейсы для транзакций BYOT включают интерфейс ICreateWithTransactionEx и интерфейс ICreateWithTipTransactionEx. Интерфейс ICreateWithTransactionEx создает объект, который включается в ручную транзакцию. Интерфейс ICreateWithTipTransactionEx создает объект, который включен в ручную транзакцию с помощью протокола Интернета транзакций (TIP).
Связанные разделы