asp.net - ¿TransactionScope necesita servicio DTC?
sql-server msdtc (2)
Según lo que estoy leyendo, para usar TransactionScope en .NET, necesita que se ejecute el servicio del Coordinador de transacciones distribuidas en Windows. Tengo ese servicio apagado , y parece que mi aplicación funciona igual y las transacciones no son un problema.
¿Me estoy perdiendo de algo? ¿Cómo puede funcionar? Estoy ejecutando Windows 7 y ejecutando la aplicación web de VisualStudio 2010.
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 usa eso al comienzo, luego "promueve" 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 podrá funcionar sin que se ejecute el servicio.
Se puede encontrar más información sobre Kernel Transaction Managger en http://en.wikipedia.org/wiki/Kernel_Transaction_Manager
MS lo agregó también porque NTFS obtuvo transacciones y necesitaba asegurarse de que un DTC no estuviera disponible.
MSDTC entra en juego solo si tienes más de una transacción con diferentes conexiones
ASÍ, la respuesta es:
¡Depende!
- Si usa 1 TranScope por 1 conexión, entonces NO
- Si usa 1 TranScope por más de 1 conexión, entonces SÍ
- Si creó el objeto TransactionScope que requiere una transacción distribuida, entonces SÍ