Nota
O acceso a esta páxina require autorización. Pode tentar iniciar sesión ou modificar os directorios.
O acceso a esta páxina require autorización. Pode tentar modificar os directorios.
En esta sección se describe cómo puede usar las características proporcionadas por el System.Transactions espacio de nombres para escribir su propia aplicación transaccional y administrador de recursos. En concreto, en esta sección se explica cómo crear y participar en una transacción (local o distribuida) con uno o varios participantes.
Información general de System.Transactions
La infraestructura proporcionada por las clases del System.Transactions espacio de nombres hace que la programación transaccional sea sencilla y eficaz al admitir transacciones iniciadas en SQL Server, ADO.NET, Message Queuing (MSMQ) y el Coordinador de transacciones distribuidas de Microsoft (MSDTC). El espacio de nombres System.Transactions proporciona tanto un modelo de programación explícito basado en la clase Transaction, como un modelo de programación implícito mediante la clase TransactionScope, en el que la infraestructura administra automáticamente las transacciones. Para obtener más información sobre cómo crear una aplicación transaccional con estos dos modelos, consulte Escritura de una aplicación transaccional.
El System.Transactions espacio de nombres también proporciona tipos para implementar un administrador de recursos. Un administrador de recursos administra datos duraderos o volátiles usados en una transacción y trabaja en cooperación con el administrador de transacciones para proporcionar a la aplicación una garantía de atomicidad y aislamiento. El administrador de transacciones proporcionado por la System.Transactions infraestructura admite transacciones que implican varios recursos volátiles o un único recurso duradero. Para obtener más información sobre la implementación de un administrador de recursos, consulte Implementación de un Administrador de Recursos.
El administrador de transacciones también escala de forma transparente las transacciones locales a transacciones distribuidas mediante la coordinación con un administrador de transacciones basado en disco, como DTC, cuando un administrador de recursos duradero adicional se inscribe con una transacción. Hay dos maneras clave de que la System.Transactions infraestructura proporcione un rendimiento mejorado.
Escalación dinámica, que garantiza que la System.Transactions infraestructura solo interactúa con MSDTC cuando una transacción abarca varios recursos distribuidos. Para obtener más información sobre la escalación dinámica. Consulte el tema Escalación de administración de transacciones .
Inscripción promocionable, que permite que un recurso, como una base de datos, tome posesión de la transacción si es la única entidad que participa en la transacción. Posteriormente, si resulta necesario, la infraestructura System.Transactions aún puede dirigir la administración de la transacción a la MSDTC. Esto reduce aún más la posibilidad de usar MSDTC. Las inscripciones promocionables se tratan en profundidad en el tema Optimización mediante confirmación de fase única y notificación de fase única promocionable.
El System.Transactions espacio de nombres define tres niveles de confianza: AllowPartiallyTrustedCallers (APTCA), DistributedTransactionPermission(DTP) y plena confianza, que restringen el acceso a los tipos de recursos que expone. Para obtener más información sobre los distintos niveles de confianza, consulte Niveles de confianza de seguridad en el acceso a los recursos.
En esta sección
Escritura de una aplicación transaccional
El System.Transactions espacio de nombres proporciona dos modelos para crear aplicaciones transaccionales. La implementación de una transacción implícita mediante el ámbito de transacción describe cómo el espacio de nombres System.Transactions admite crear transacciones implícitas usando la clase TransactionScope.
La implementación de una transacción explícita mediante CommittableTransaction describe cómo el espacio de nombres admite la System.Transactions creación de transacciones explícitas mediante la CommittableTransaction clase .
Para ver temas adicionales sobre cómo escribir una aplicación transaccional, consulte Escritura de una aplicación transaccional.
Implementación de Un Administrador de recursos
Para implementar un administrador de recursos que pueda participar en una transacción, consulte Implementación de un Administrador de recursos. En esta sección se describe la inscripción de un recurso, la confirmación de una transacción, la recuperación después del error y los procedimientos recomendados de optimización.