Подтвердить что ты не робот

Как работает TransactionScope?

Когда Method1() создает экземпляр TransactionScope и вызывает Method2(), который также создает экземпляр TransactionScope, как .NET знает, что оба находятся в одной области? Я считаю, что он не использует статические методы внутри, иначе он не будет работать на многопоточных приложениях, таких как ASP.NET.

Можно ли создать собственный класс TransactionScope или использовать оригинальные функции, которые только Microsoft знает, как они работают?

4b9b3361

Ответ 1

Надеюсь, что это поможет:

http://msdn.microsoft.com/en-us/magazine/cc300805.aspx

Для тех, кто не знаком с TransactionScope, он является частью пространства имен System.Transactions, новым для Microsoft®.NET Framework 2.0. System.Transactions предоставляет инфраструктуру транзакций, полностью интегрированную в .NET Framework, включая, но не ограничиваясь, ADO.NET. Классы Transaction и TransactionScope являются двумя наиболее важными классами в этом пространстве имен. Как следует из этого вопроса, вы можете создать экземпляр TransactionScope, а операции ADO.NET, выполняемые в рамках этого TransactionScope, будут зачислены автоматически (вы также можете получить доступ к текущей транзакции через статическое свойство Transaction.Current):

using(TransactionScope scope = new TransactionScope())
{
    ... // all operations here part of a transaction
    scope.Complete();
}

Ответ 2

TransactionScope в значительной степени основывается на COM - особенно над MSDTC.

Эта операция координирует транзакции и позволяет вложенные транзакции.

Короче говоря, при первом вызове TransactionScope транзакция регистрируется с помощью MSDTC, как и все остальные вызовы TransactionScope. MSDTC координирует их все.