2012-01-31 17 views
10

Por lo que estoy leyendo, para utilizar TransactionScope en .NET, necesita que se ejecute el servicio del Coordinador de transacciones distribuidas en Windows. Tengo ese servicio apagado, y mi aplicación parece estar funcionando igual y las transacciones de retroceso no son un problema.¿TransactionScope necesita servicio DTC?

¿Echo de menos algo? ¿Cómo puede funcionar? Estoy utilizando Windows 7 y ejecutar la aplicación Web fuera VisualStudio 2010.

+1

DTC se requiere, que yo sepa, cuando su transacción necesita cruzar ciertos límites. Por ejemplo, creo que lo necesita para una transacción en dos bases de datos en la máquina local, o para escalar su transacción a un servidor remoto. No tengo una prueba o enlaces duros, así que lo dejaré como un comentario para que investigue en lugar de como una respuesta. Espero eso ayude. – Smudge202

Respuesta

10

Las versiones más modernas de Windows tienen una versión mini DTC en kernel. No se distribuye, pero usa la misma API, pero solo puede manejar un recurso por alcance de transacción.

TransactionScope utiliza eso al inicio, luego "promociona" la transacción al DTC real en el momento en que se agrega un segundo recurso (el recurso en su caso es una conexión de base de datos). Por lo tanto, siempre que su caso de uso sea amplio, evitará la sobrecarga (alta) de la parte DISTRIBUIDA de DTC y puede funcionar sin que se ejecute el servicio.

Más información sobre el kernel de Transacción Managger se puede encontrar en http://en.wikipedia.org/wiki/Kernel_Transaction_Manager

MS añadió que también porque tiene NTFS transaccional y que necesitaba para asegurarse de que un DTC es aavailable.

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

8

MSDTC entra en el juego sólo si tiene más de una transacción con diferentes conexiones

así, la respuesta es:

¡Depende!

  • Si utiliza 1 TranScope por 1 conexión - a continuación, NO
  • Si utiliza 1 TranScope por más de 1 conexión - entonces SÍ
  • Si ha creado objeto TransactionScope que requiere de transacciones distribuidas - a continuación, SÍ
+1

¿De verdad? Si afirma claramente que en un TranScope utiliza más de una conexión, entonces actualizo la respuesta, de lo contrario, parece que usa 1 conexión por alcance de transacción, este escenario no incluye MSDTC –

Cuestiones relacionadas