Digamos que tiene una aplicación que conecta 3 sistemas externos diferentes. Necesita actualizar algo en todo 3. En caso de falla, necesita deshacer las operaciones. Esto no es algo difícil de implementar, pero dice que la operación 3 falla, y al retroceder, la reversión de la operación 1 falla. Ahora el primer sistema externo está en un estado inválido ...Operaciones atómicas en varios sistemas externos sin transacción
Estoy pensando que una posible solución es cerrar la aplicación y forzar una reparación manual del sistema externo, pero de nuevo ... Puede que ya tenga usó esta información (y tal vez por eso falló), o es posible que no tengamos acceso suficiente. ¡O tal vez ni siquiera sea una buena forma de revertir la acción!
¿Existen algunas buenas maneras de manejar estos casos?
EDIT: Algunos detalles de la aplicación ..
Es una aplicación web de usuario múltiples. La mayor parte del trabajo se realiza con trabajos programados (a través de Quartz.Net), por lo que la mayoría de las operaciones se ejecuta en su propio hilo. Sin embargo, algunas acciones de usuario deberían desencadenar trabajos que actualicen varios sistemas. Los sistemas externos son algo inestables.
estaba pensando en cambiar la aplicación a utilizar la unidad de mando y de patrón de trabajo
¿Están fijos los sistemas externos? ¿O puedes modificarlos? – bmargulies