2

J'ai un processus en plusieurs étapes où chaque étape effectue des E/S réseau (appel de service Web), puis persiste certaines données. Je veux le concevoir de manière tolérante aux pannes de sorte que si le service échoue, soit en raison d'un plantage du système, soit parce que l'une des étapes échoue, je suis capable de récupérer et de redémarrer depuis la dernière étape sans erreur.modèles de conception pour les services transactionnels avec points de reprise et récupération

Voici comment je pense aborder ce (ce qui est assez haut niveau):

  1. Stocké l'état de chaque étape (NOT_STARTED, IN_PROGRESS, ECHEC) dans une table de base de données
  2. Si une étape échoue marquer et son pas dépendante comme « ECHEC » et passer à l'étape suivante non dépendante
  3. récupérée par la lecture de ce tableau (par exemple dans une partie d'amorçage de l'application)

Je suis wonderin g s'il existe des modèles de conception, des cadres et des algorithmes qui traitent ce problème.

+0

Avez-vous l'impression que l'une des réponses ci-dessous répond précisément à votre question? Si ce n'est pas le cas, essayez de clarifier votre question afin qu'une réponse plus précise puisse être donnée. –

+0

@Ari, je regardais plus dans le sens des algorithmes, des frameworks ou des modèles de design (au-delà des choses OO de base) qui traitent ce problème –

Répondre

0

Memento (GOF) pourrait être utilisé pour stocker l'état avant un appel potentiellement défaillant.

Un bon mot-clé à rechercher serait transactions. Cela vous permet d'annuler les modifications survenues en raison d'un échec à l'état "stable" le plus proche. C'est une chose que votre DB fournirait. Le Command pattern a également des utilisations connues des transactions.

0

En ce qui concerne les modèles de comportement, je vous recommande de regarder ce qui suit, car ils semblent bien équipés pour vos besoins. Gardez à l'esprit que cette liste est basée sur une très bonne compréhension de votre implémentation.

  • Template method - Pour définir des squelettes de programme
  • Strategy - Pour la permutation des algorithmes au besoin
  • Memento - Pour la restauration d'objets à leurs états antérieurs
  • State - Couplé avec les motifs de Memento

Si vous n'êtes pas déjà familier, je voudrais FORTEMENT recommander lo en utilisant les modèles Model-View-Controller et Model-View-Presenter, car ils rendront votre expérience de développement beaucoup plus agréable.

Si vous avez des questions de suivi, n'hésitez pas à demander. :)