2012-01-31 72 views
10

从我读什么,为了在.NET中使用的TransactionScope,您需要在Windows Distributed Transaction Coordinator服务在运行。我有一个服务关闭,和我的应用程序似乎运行相同,并回滚事务没有问题。TransactionScope需要DTC服务吗?

我错过了什么吗? 它是如何工作的?我运行Windows 7和运行web应用程序关闭的VisualStudio 2010

+1

DTC是必需的,据我所知,当你的交易需要跨越一定的边界。例如,我相信您需要它在本地计算机上的两个数据库之间进行事务处理,或者将事务升级到远程服务器。我没有硬性的证据/链接,所以我只是留下这个作为你的意见调查,而不是作为答案。希望能帮助到你。 – Smudge202 2012-01-31 07:15:31

回答

10

更现代的版本在内核迷你DTC版本。它不是分布式的,但使用相同的API - 但它只能处理每个事务作用域的一个资源。

的TransactionScope使用,在一开始,然后是“促进”交易的真正的DTC的时刻添加第二个资源(资源在你的情况是一个数据库连接)。所以,只要你的使用情况是ismple,你避免DTC的分布式部分(高)的开销,并且可以在不运行的服务工作。

关于内核事务Managger更多信息可以在http://en.wikipedia.org/wiki/Kernel_Transaction_Manager

找到MS加也因为NTFS了交易,它需要确保一个DTC是aavailable。

http://www.codeguru.com/cpp/article.php/c18309/

8

MSDTC进入剧中唯一的,如果你有不同的连接

多个事务

这样,答案是:

这取决于!

  • 如果使用每1 1 TranScope连接 - 然后NO
  • 如果使用每1个多连接1个TranScope - 然后YES
  • 如果创建这需要分布式事务的TransactionScope对象 - 然后YES
  • 窗户
+1

真的吗?如果你清楚注明,比一个TranScope你使用一个以上的连接,然后我更新的答案,否则 - 它看起来像你使用每笔交易范围1个连接 - 这种情况下不涉及MSDTC – 2012-01-31 08:20:10