Share via


Transacciones en servicios web XML de ASP.NET

La compatibilidad de transacciones con servicios web aumenta la compatibilidad que se encuentra en Common Language Runtime, que se basa en el mismo modelo de transacciones distribuidas que se encuentran en Microsoft Transaction Server (MTS) y en los Servicios COM+. El modelo se basa en decidir mediante una declaración si un objeto participa en una transacción, en lugar de escribir el código concreto que se va a administrar para confirmar y deshacer una transacción. En un servicio web XML creado con ASP.NET, puede declarar el comportamiento de las transacciones del servicio web estableciendo la propiedad TransactionOption del atributo WebMethod aplicada al método de servicio web. Consulte un ejemplo en Cómo: Participar en transacciones en servicios web creados con ASP.NET.

Si se genera una excepción mientras se está ejecutando un método de servicio web, la transacción se anula automáticamente; por el contrario, si no se genera ninguna excepción, la transacción se confirma automáticamente.

La propiedad TransactionOption del atributo WebMethodAttribute especifica cómo participa un método de servicio web en una transacción. Aunque este nivel declarativo representa la lógica de una transacción, es un paso que se ha quitado de la transacción física. Una transacción física se produce cuando un objeto transaccional tiene acceso a un recurso de datos, como una base de datos o una cola de mensajes. La transacción asociada al objeto pasa automáticamente al administrador de recursos adecuado. Un proveedor de datos de .NET Framework, como el Proveedor de datos de .NET Framework para SQL Server o el Proveedor de datos de .NET Framework para OLE DB, busca la transacción en el contexto del objeto y se incorpora en la transacción a través del Coordinador de transacciones distribuidas (DTC). Se produce toda la transacción automáticamente.

Los métodos de servicio web sólo pueden participar en una transacción como la raíz de una nueva transacción. Como la raíz de una nueva transacción, todas las interacciones con los administradores de recursos, como los servidores que ejecutan Microsoft SQL Server, Message Queue Server de Microsoft (también conocido como MSMQ) y Microsoft Host Integration Server mantienen las propiedades ACID exigidas para ejecutar aplicaciones distribuidas robustas. Los métodos de servicio web que llaman a otros métodos de servicio web participan en transacciones diferentes, porque las transacciones no pasan por los métodos de servicio web.

Nota:

Cuando no se llama al método que implementa el método de servicio web a causa de una solicitud de Internet para el archivo con una extensión .asmx en la que reside o está asociado, el valor de la propiedad TransactionOption no tiene ningún efecto. Esto puede suceder cuando la clase en la que reside el método es miembro de un proyecto dentro de Visual Studio .NET y no se invoca el servicio web usando una clase de proxy. En Visual Studio .NET, una clase de proxy se genera cuando se agrega una referencia web.

Consulte también

Tareas

Cómo: Participar en transacciones en servicios web creados con ASP.NET

Referencia

TransactionOption Enumeration
WebMethodAttribute.TransactionOption Property

Otros recursos

Transaction Processing
Servicios web XML con ASP.NET

Copyright © 2007 Microsoft Corporation. Reservados todos los derechos.