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

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

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

28
задан Jim Aho 9 February 2016 в 13:09
поделиться

2 ответа

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

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())
{
 ... // все операции здесь являются частью транзакции
 scope.Complete();
}
17
ответ дан 28 November 2019 в 03:49
поделиться

TransactionScope в основном строится поверх COM - в частности, поверх MSDTC.

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

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

8
ответ дан 28 November 2019 в 03:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: