Visual C++ .NET - Ayuda atributos com+

 
Vista:

Ayuda atributos com+

Publicado por Marc (1 intervención) el 25/07/2008 11:06:04
Hola, tengo una duda sobre la utilización de atributos com+. Tengo una clase "A" que está dentro de una transactión "Transaction.suppported". Otra clase "B" con la misma característica.

Desde otra clase "C" se utiliza un objeto de la clase "B" para guardar una serie de datos.

Se llama a una función de "B" que lo primero que hace es llamar a una función guardar de la clase "A". Luego a continuación hace otra serie de tareas.

La duda es que pasa si la función Guardar de la clase "A" lo hace correctamente pero luego sigue adelante y falla alguna tarea dentro de "B". Entonces se hace un rollback de todo pero las operaciones de "A" están ya guardadas y parece que no hace rollback.

Si alguien me puede explicar como funcionan estos atributos o algún sitio donde lo expliquen lo agradecería.

Un saludo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Gestión de transacciones con atributos COM+

Publicado por Alejandro (265 intervenciones) el 05/02/2024 20:24:11
Marc, en el escenario que describiste, estás utilizando atributos COM+ para gestionar transacciones en las clases A y B. Aquí hay una explicación básica de cómo funcionan los atributos COM+ en este contexto:

1. TransactionAttribute (Transaction.Supported):
- Al aplicar el atributo `Transaction.Supported` a una clase, estás indicando que la clase es compatible con transacciones, pero no inicia automáticamente una transacción. Si una transacción ya está en curso cuando se llama a los métodos de la clase, la clase se une a esa transacción.

2. Rollback automático:
- Si se produce una excepción y la transacción no se completa correctamente, las transacciones COM+ gestionarán automáticamente el rollback de todas las operaciones dentro de la transacción. Esto debería revertir cualquier cambio realizado, incluidas las operaciones en la clase A.

3. Efecto en clases anidadas:
- En tu caso, si la función `Guardar` de la clase A se llama dentro de una transacción, pero luego la función en la clase B falla y se produce un rollback, todas las operaciones, incluidas las de la clase A, deberían revertirse.

4. Investigación adicional:
- Si estás experimentando un comportamiento diferente, es posible que desees realizar una investigación más profunda. Puedes revisar la documentación de Microsoft sobre transacciones COM+ y atributos de transacción en C++ .NET para obtener más información detallada sobre cómo se manejan las transacciones en tu entorno específico.

5. Consideraciones adicionales:
- Asegúrate de que todas las clases involucradas estén correctamente configuradas con los atributos de transacción apropiados y que no haya operaciones fuera de las transacciones que puedan afectar el resultado final.

Ten en cuenta que el uso de transacciones y atributos COM+ puede ser complejo y es esencial entender completamente cómo están configuradas tus clases y transacciones para garantizar el comportamiento esperado.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar