How does TransactionScope work?

删除回忆录丶 提交于 2019-11-30 11:51:06

问题


When Method1() instantiates a TransactionScope and calls Method2() that also instantiates a TransactionScope, how does .NET know both are in the same scope? I believe it doesn't use static methods internally otherwise it wouldn't work well on multithreaded applications like ASP.NET.

Is it possible to create my own TransactionScope-like class or does the original one use special features those just Microsoft knows how they work?


回答1:


Hope this helps:

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

For those unfamiliar with TransactionScope, it is part of the System.Transactions namespace new to the Microsoft® .NET Framework 2.0. System.Transactions provides a transactions framework fully integrated into the .NET Framework, including but not limited to ADO.NET. The Transaction and TransactionScope classes are two of the most important classes in this namespace. As the question alludes to, you can create a TransactionScope instance, and ADO.NET operations executed within the scope of that TransactionScope will be enlisted automatically (you can also access the current Transaction through the Transaction.Current static property):

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



回答2:


TransactionScope pretty much builds on top of COM - specifically over MSDTC.

This coordinates transactions, and allows nesting of transactions.

In short, when you first call TransactionScope, a transaction registers with MSDTC, as would all other calls to TransactionScope. MSDTC coordinates them all.



来源:https://stackoverflow.com/questions/3417857/how-does-transactionscope-work

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!