Exportar (0) Imprimir
Expandir todo

System.Transactions (Espacio de nombres)

El espacio de nombres System.Transactions contiene clases que permiten escribir aplicaciones transaccionales y administradores de recursos propios. Concretamente, se puede crear una transacción (local o distribuida) y participar en la misma con uno o varios participantes.

NotaImportante:

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

 ClaseDescripción
Clase públicaCommittableTransactionDescribe una transacción que se puede confirmar.
Clase públicaDependentTransactionDescribe 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.
Clase públicaDistributedTransactionPermissionPermiso 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.
Clase públicaDistributedTransactionPermissionAttributePermite aplicar acciones de seguridad para DistributedTransactionPermission en el código mediante el uso de la seguridad declarativa. Esta clase no se puede heredar.
Clase públicaEnlistmentFacilita la comunicación entre un participante de la transacción inscrito y el administrador de transacciones durante la fase final de la transacción.
Clase públicaPreparingEnlistmentFacilita 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.
Clase públicaSinglePhaseEnlistmentProporciona 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.
Clase públicaSubordinateTransactionRepresenta una transacción que no es raíz y que puede delegarse. Esta clase no se puede heredar.
Clase públicaTransactionRepresenta una transacción.
Clase públicaTransactionAbortedExceptionLa 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.
Clase públicaTransactionEventArgsProporciona los datos para los eventos de transacción siguientes: DistributedTransactionStarted, TransactionCompleted.
Clase públicaTransactionExceptionLa excepción que se produce cuando intenta trabajar en una transacción que no puede aceptar el nuevo trabajo.
Clase públicaTransactionInDoubtExceptionLa 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.
Clase públicaTransactionInformationProporciona información adicional respecto a una transacción.
Clase públicaTransactionInteropFacilita 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.
Clase públicaTransactionManagerContiene métodos utilizados para la administración de transacciones. Esta clase no se puede heredar.
Clase públicaTransactionManagerCommunicationExceptionLa excepción que se produce cuando un administrador de recursos no puede comunicarse con el administrador de transacciones.
Clase públicaTransactionPromotionExceptionLa excepción que se produce cuando se produce un error en una promoción.
Clase públicaTransactionScopeCrea un bloque de código transaccional. Esta clase no se puede heredar.

 InterfazDescripción
Interfaz públicaIDtcTransactionDescribe una transacción de DTC.
Interfaz públicaIEnlistmentNotificationDescribe 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.
Interfaz públicaIPromotableSinglePhaseNotificationDescribe un objeto que actúa como un delegado de confirmación para una transacción no distribuida interna a un administrador de recursos.
Interfaz públicaISimpleTransactionSuperiorRepresenta una transacción que no es una transacción raíz, pero se puede escalar para que sea administrado por MSDTC.
Interfaz públicaISinglePhaseNotificationDescribe un objeto de recurso que admite la optimización de confirmación en una fase para participar en una transacción.
Interfaz públicaITransactionPromoterDescribe una transacción delegada para una transacción existente que se puede elevar para ser administrada por MSDTC cuando se necesita.

 EstructuraDescripción
Estructura públicaTransactionOptionsContiene información adicional que especifica los comportamientos de la transacción.

 DelegadoDescripción
Delegado públicoHostCurrentTransactionCallbackProporciona un mecanismo para el entorno de host para proporcionar su propia noción predeterminada de Current.
Delegado públicoTransactionCompletedEventHandlerRepresenta el método que controla el evento TransactionCompleted de Transaction.
Delegado públicoTransactionStartedEventHandlerRepresenta el método que controlará el evento DistributedTransactionStarted de una clase TransactionManager.

 EnumeraciónDescripción
Enumeración públicaDependentCloneOptionControla qué tipo de transacción dependiente se va a crear.
Enumeración públicaEnlistmentOptionsDetermina si el objeto se debería inscribir durante la fase de preparación.
Enumeración públicaEnterpriseServicesInteropOptionEspecifica cómo interactúan las transacciones distribuidas con transacciones COM+.
Enumeración públicaIsolationLevelEspecifica el nivel de aislamiento de una transacción.
Enumeración públicaTransactionScopeOptionProporciona opciones adicionales para crear un ámbito de la transacción.
Enumeración públicaTransactionStatusDescribe el estado actual de una transacción distribuida.
Mostrar:
© 2014 Microsoft