2012-01-31 15 views
10

Z tego, co czytam, aby korzystać z usługi TransactionScope w .NET, potrzebna jest usługa Distributed Transaction Coordinator w systemie Windows. Mam tę usługę wyłączoną, a moja aplikacja wydaje się działać tak samo i wycofuje transakcje bez problemu.Czy usługa TransactionScope wymaga usługi DTC?

Czy brakuje mi czegoś? Jak to działa? Używam Windows 7 i działa webapp off VisualStudio 2010.

+1

DTC jest wymagane, o ile mi wiadomo, kiedy transakcja musi przekroczyć pewnych granic. Na przykład, wydaje mi się, że potrzebujesz go do transakcji między dwiema bazami danych na komputerze lokalnym lub do eskalacji transakcji do zdalnego serwera. Nie mam twardych dowodów/linków, więc zostawię to jako komentarz do zbadania zamiast odpowiedzi. Mam nadzieję, że to pomoże. – Smudge202

Odpowiedz

10

Więcej nowoczesnych wersji systemu Windows ma mini wersję DTC w jądrze. Nie jest dystrybuowany, ale używa tego samego interfejsu API - ale może obsługiwać tylko jeden zasób dla każdego zakresu transakcji.

TransactionScope używa tego na początku, a następnie "promuje" transakcję do prawdziwego DTC w momencie dodania drugiego zasobu (zasobem w twoim przypadku jest połączenie z bazą danych). Tak więc, o ile twój przypadek użycia jest równy, unikasz (wysokiego) narzutów z DYSTRYBUCJI części DTC i możesz pracować bez uruchomionej usługi.

Więcej informacji o Kernel Transaction Managger można znaleźć na http://en.wikipedia.org/wiki/Kernel_Transaction_Manager

MS dodaje go również dlatego, że dostał transakcyjny NTFS i potrzebne, aby upewnić DTC jest aavailable.

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

8

MSDTC wchodzi w grę tylko wtedy, gdy masz więcej niż jedną transakcję z różnych połączeń

SO, odpowiedź brzmi:

To zależy!

  • Jeśli używasz 1 TranScope za 1 połączenie - to NIE
  • Jeśli używasz 1 TranScope za ponad 1 przyłącze - wtedy TAK
  • Jeśli utworzono obiekt TransactionScope która wymaga transakcji rozproszonych - to TAK
+1

Naprawdę? Jeśli wyraźnie stwierdzasz, że w jednym TranScope używasz więcej niż jednego połączenia, to aktualizuję odpowiedź, w przeciwnym razie - wygląda na to, że używasz 1 połączenia na zakres transakcji - ten scenariusz nie dotyczy MSDTC –

Powiązane problemy