Extensión de administración de transacción

Windows hospeda un conjunto de servicios y módulos que juntos constituyen un administrador de transacciones. La subida de administración de transacciones describe el proceso de migración de una transacción desde uno de los componentes del administrador de transacciones a otro.

System.Transactions incluye un componente de administrador de transacciones que coordina una transacción que implica a lo sumo, un recurso duradero único o varios recursos volátiles. Dado que el administrador de transacciones sólo utiliza las llamadas de dominio de intraaplicación, produce el máximo rendimiento. Los programadores no necesitan interactuar directamente con el administrador de transacciones. En su lugar, una infraestructura común que define las interfaces, un comportamiento común, y las clases de ayudante System.Transactions es proporcionada por el espacio de nombres.

Al desear proporcionar la transacción a otro objeto en otro dominio de aplicación (incluso por el proceso y límites del equipo) en el mismo equipo, la infraestructura System.Transactions realiza una escalada automáticamente de la transacción que va a ser administrada por la Microsoft DTC (Coordinador de transacciones distribuidas) (MSDTC). La subida también se produce si da de alta a otro administrador de recursos duradero. Cuando se realiza una escalada, la transacción sigue siendo administrada en su estado elevado hasta su realización.

Entre la transacción System.Transactions y la transacción de MSDTC, hay un tipo intermediario de transacción disponible a través de la inscripción de fase única promocional (PSPE). PSPE es otro mecanismo importante en System.Transactions para la optimización de rendimiento. Permite un recurso duradero remoto, situado en un dominio de aplicación diferente, proceso o equipo, para participar en una transacción System.Transactions sin producir que se realice una escalada a una transacción de MSDTC. Para obtener más información sobre PSPE, vea Dar de alta los recursos como participantes en una transacción.

Cómo se Inicia la subida

La subida de la transacción reduce el rendimiento porque MSDTC reside en un proceso independiente, y realizar una escalada de una transacción a MSDTC produce el envío de mensajes durante el proceso. Para mejorar el rendimiento, debería retrasar o evitar la subida a MSDTC; así, necesita conocer cómo y cuando se inicia la subida.

Con tal de que la infraestructura System.Transactions administre los recursos volátiles y a lo sumo un recurso duradero que admita notificaciones de la fase única, la transacción permanece en la propiedad de la infraestructura System.Transactions. El administrador de transacciones sólo es útil a esos recursos que viven en el mismo dominio de aplicación y para los que no se requiere estar registrado (escribir el resultado de la transacción en el disco). Una subida que provoca que la infraestructura System.Transactions transfiera la propiedad de la transacción a MSDTC sucede cuando:

  • Por lo menos un recurso duradero que no admite notificaciones de la fase única se da de alta en la transacción.

  • Por lo menos dos recursos duraderos que admiten notificaciones de la fase del soltero se dan de alta en la transacción. Por ejemplo, dar de alta una conexión única con no produce la promoción de ninguna transacción. Sin embargo, cada vez que se abre una segunda conexión a una base de datos que hace que la base de datos se inscriba, la infraestructura System.Transactions detecta que es el segundo recurso duradero en la transacción, y realiza una escalada a una transacción de MSDTC.

  • Se invoca una solicitud para "calcular referencias" a la transacción a un dominio de aplicación diferente o un proceso diferente. Por ejemplo, la serialización del objeto de transacción a través de un límite del dominio de aplicación. Se calculan referencias al objeto de transacción por valor, significando que cualquier intento de pasarlo por un límite de dominio de aplicación (incluso en el mismo proceso) resulta en la serialización del objeto de transacción. Puede pasar los objetos de transacción realizando una llamada en un método remoto que toma Transaction como un parámetro o puede intentar tener acceso a un componente transaccional-reparado remoto. Esto serializa el objeto de transacción y resulta en una subida, como cuando una transacción se serializa por un dominio de aplicación. Se distribuye y el administrador de transacciones local ya no es adecuado.

La tabla siguiente hace una lista de todas las posibles excepciones que se pueden producir durante la subida.

Tipo de excepción Condición

InvalidOperationException

Intento para realizar una escalada de una transacción con nivel de aislamiento igual a Snapshot.

TransactionAbortedException

El administrador de transacciones está inactivo.

TransactionException

Error en la subida, se anula la aplicación.

Copyright © 2007 Microsoft Corporation. Reservados todos los derechos.