2012-01-31 100 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