System.Transactions (Espacio de nombres)
Importante: |
|---|
| Sólo se pueden crear aplicaciones utilizando este espacio de nombres en las plataformas Windows 2000, Windows XP y Windows 2003. Si se crea una transacción en las plataformas Windows 98 y Windows ME, se inicia una excepción PlatformNotSupportedException. |
La infraestructura System.Transactions hace que la programación transaccional sea sencilla y eficaz en toda la plataforma al admitir las transacciones iniciadas en SQL Server, ADO.NET, MSMQ y MSDTC (Coordinador de transacciones distribuidas de Microsoft). Proporciona tanto un modelo de programación explícito basado en la clase Transaction, como un modelo de programación implícito utilizando la clase TransactionScope, donde la infraestructura administra automáticamente las transacciones. Es muy recomendable utilizar el modelo implícito, más sencillo, y desarrollarlo. Como introducción, vea el tema Implementar una transacción implícita con el ámbito de transacción. Para obtener más información sobre cómo escribir una aplicación transaccional, vea Writing a Transactional Application.
System.Transactions también proporciona tipos para implementar un administrador de recursos. El administrador de transacciones nativo para la infraestructura System.Transactions permite que tanto los recursos volátiles como el alta de un único recurso duradero puedan confirmar o deshacer eficazmente. Para obtener más información sobre la implementación de un administrador de recursos, vea Implementar un administrador de recursos.
Cuando un administrador de recursos duraderos adicional se da de alta a sí mismo en una transacción, el administrador de transacciones también dirige de forma transparente las transacciones locales a transacciones distribuidas, coordinando a través de un administrador de transacciones basado en disco como DTC. La infraestructura System.Transactions proporciona un rendimiento mejorado principalmente de dos formas:
-
Jerarquía dinámica, que significa que la infraestructura System.Transactions sólo activa MSDTC cuando realmente es necesario para una transacción. Esta área se trata detalladamente en el tema Elevación de la administración de transacciones.
-
Inscripciones de ascenso, que permiten que un recurso, como una base de datos, asuma la propiedad 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 MSDTC. Esto reduce aún más la oportunidad de utilizar MSDTC. Esta área se trata detalladamente en el tema Optimización con confirmación de una fase y notificación de una fase promovible.
System.Transactions define tres niveles de confianza que restringen el acceso a los tipos de recursos que expone. Concretamente, un código de confianza parcial puede llamar al ensamblado System.Transactions cuando se ha marcado con el atributo AllowPartiallyTrustedCallers (APTCA). Este atributo básicamente quita el valor LinkDemand implícito para el permiso FullTrust establecido que, por otra parte, se coloca automáticamente en cada método público accesible de cada tipo. Sin embargo, algunos tipos y miembros siguen necesitando permisos más firmes.
En la siguiente lista se relacionan los tipos y miembros a los que no puede llamar el código de confianza parcial puesto que este atributo de seguridad declarativo tiene un carácter representativo:
PermissionSetAttribute(SecurityAction.LinkDemand, Name := "FullTrust")
System.Transactions.Transaction.EnlistDurable
System.Transactions.Transaction.EnlistPromotableSinglePhase
System.Transactions.TransactionInterop
System.Transactions.TransactionManager.DistributedTransactionStarted
System.Transactions.TransactionManager.HostCurrentTransactionCallback
System.Transactions.TransactionManager.Reenlist
System.Transactions.TransactionManager.RecoveryComplete
System.Transactions.TransactionScope.TransactionScope (System.Transactions.Transaction,System.TimeSpan,System.Transactions.EnterpriseServicesInteropOption)
M:System.Transactions.TransactionScope.TransactionScope(System.Transactions.TransactionScopeOption,System.Transactions.TransactionOptions,System.Transactions.EnterpriseServicesInteropOption)
Para obtener más información sobre los distintos niveles de confianza, vea Niveles de confianza de seguridad al obtener acceso a recursos.
Tecnologías de desarrollo fundamental\Acceso de datos\Procesamiento de transacciones\
Para obtener más información sobre la forma de utilizar el espacio de nombres System.Transactions, puede consultar la documentación conceptual Procesamiento de transacciones, situada en la sección "Tecnologías de desarrollo fundamental\Acceso de datos\Procesamiento de transacciones\" de la documentación. Concretamente, podrá encontrar más información en los temas siguientes.
Características que proporciona System.Transactions
Writing a Transactional Application
Implementar un administrador de recursos
| Clase | Descripción | |
|---|---|---|
![]() | CommittableTransaction | Describe una transacción que se puede confirmar. |
![]() | DependentTransaction | Describe un clon de una transacción y garantiza que no se puede confirmar la transacción hasta que la aplicación no deja de procesar la transacción. Esta clase no se puede heredar. |
![]() | DistributedTransactionPermission | Permiso que System.Transactions solicita cuando la administración de una transacción se dirige al Coordinador de transacción distribuida de Microsoft (MS DTC). Esta clase no se puede heredar. |
![]() | DistributedTransactionPermissionAttribute | Permite aplicar acciones de seguridad para DistributedTransactionPermission en el código mediante el uso de la seguridad declarativa. Esta clase no se puede heredar. |
![]() | Enlistment | Facilita la comunicación entre un participante de la transacción inscrito y el administrador de transacciones durante la fase final de la transacción. |
![]() | PreparingEnlistment | Facilita la comunicación entre un participante de la transacción inscrito y el administrador de transacciones durante la fase de preparación de la transacción. |
![]() | SinglePhaseEnlistment | Proporciona un conjunto de devoluciones de llamada que facilitan la comunicación entre un participante inscrito en la confirmación en una fase y el administrador de transacciones cuando se recibe la notificación SinglePhaseCommit. |
![]() | SubordinateTransaction | Representa una transacción que no es raíz y que puede delegarse. Esta clase no se puede heredar. |
![]() | Transaction | Representa una transacción. |
![]() | TransactionAbortedException | La excepción que se produce cuando se intenta una operación en una transacción que ya se ha deshecho o se intenta confirmar la transacción y se anula la transacción. |
![]() | TransactionEventArgs | Proporciona los datos para los eventos de transacción siguientes: DistributedTransactionStarted, TransactionCompleted. |
![]() | TransactionException | La excepción que se produce cuando intenta trabajar en una transacción que no puede aceptar el nuevo trabajo. |
![]() | TransactionInDoubtException | La excepción que se produce cuando se intenta una operación en una transacción que está en duda o se intenta confirmar la transacción y ésta pasa al estado de en duda. |
![]() | TransactionInformation | Proporciona información adicional respecto a una transacción. |
![]() | TransactionInterop | Facilita la interacción entre System.Transactions y componentes que se han escrito previamente para interactuar con MSDTC, COM+ o System.EnterpriseServices. Esta clase no se puede heredar. |
![]() | TransactionManager | Contiene métodos utilizados para la administración de transacciones. Esta clase no se puede heredar. |
![]() | TransactionManagerCommunicationException | La excepción que se produce cuando un administrador de recursos no puede comunicarse con el administrador de transacciones. |
![]() | TransactionPromotionException | La excepción que se produce cuando se produce un error en una promoción. |
![]() | TransactionScope | Crea un bloque de código transaccional. Esta clase no se puede heredar. |
| Interfaz | Descripción | |
|---|---|---|
![]() | IDtcTransaction | Describe una transacción de DTC. |
![]() | IEnlistmentNotification | Describe una interfaz que un administrador de recursos implementará con el fin de proporcionar devoluciones de llamada de notificación de confirmación en dos fases al administrador de transacciones al inscribirse para la participación. |
![]() | IPromotableSinglePhaseNotification | Describe un objeto que actúa como un delegado de confirmación para una transacción no distribuida interna a un administrador de recursos. |
![]() | ISimpleTransactionSuperior | Representa una transacción que no es una transacción raíz, pero se puede escalar para que sea administrado por MSDTC. |
![]() | ISinglePhaseNotification | Describe un objeto de recurso que admite la optimización de confirmación en una fase para participar en una transacción. |
![]() | ITransactionPromoter | Describe una transacción delegada para una transacción existente que se puede elevar para ser administrada por MSDTC cuando se necesita. |
| Estructura | Descripción | |
|---|---|---|
![]() | TransactionOptions | Contiene información adicional que especifica los comportamientos de la transacción. |
| Delegado | Descripción | |
|---|---|---|
![]() | HostCurrentTransactionCallback | Proporciona un mecanismo para el entorno de host para proporcionar su propia noción predeterminada de Current. |
![]() | TransactionCompletedEventHandler | Representa el método que controla el evento TransactionCompleted de Transaction. |
![]() | TransactionStartedEventHandler | Representa el método que controlará el evento DistributedTransactionStarted de una clase TransactionManager. |
| Enumeración | Descripción | |
|---|---|---|
![]() | DependentCloneOption | Controla qué tipo de transacción dependiente se va a crear. |
![]() | EnlistmentOptions | Determina si el objeto se debería inscribir durante la fase de preparación. |
![]() | EnterpriseServicesInteropOption | Especifica cómo interactúan las transacciones distribuidas con transacciones COM+. |
![]() | IsolationLevel | Especifica el nivel de aislamiento de una transacción. |
![]() | TransactionScopeOption | Proporciona opciones adicionales para crear un ámbito de la transacción. |
![]() | TransactionStatus | Describe el estado actual de una transacción distribuida. |
Importante: 


