J'ai beaucoup lu sur l'architecture Event Driven et cela me semble logique, mais la question de donner aux utilisateurs un feedback immédiat me trouble.Donner une réponse immédiate aux utilisateurs dans l'architecture Event Driven
Dites qu'un service ('EmployeeService') contient une liste de tous les employés. La logique métier de création d'un salarié se trouve dans ce service.
L'interface utilisateur d'un autre système utilise ce service. L'exigence est (que cela vous plaise ou non) qu'il y ait une grille d'employés, et un bouton 'ajouter un employé' qui affiche un formulaire, et quand vous soumettez le formulaire, il vous renvoie à la grille avec le nouvel employé dans il. La grille montre les champs dérivés qui sont calculés par le service (ceci est important à noter!). Traditionnellement, sur submit, j'aurais affiché un écran de chargement, envoyé de manière synchrone une requête WCF pour enregistrer l'employé, et quand cela aurait été fait, et transmis à la grille (qui aurait certainement maintenant le nouvel employé). Avec EDA, sur submit, je voudrais 'tirer et oublier' une commande pour enregistrer l'utilisateur - mais alors quoi? Je pourrais transmettre à la grille, mais il y a une chance que le nouvel employé ne soit pas encore là? Je pourrais ajouter manuellement à la grille en supposant que tout sera OK, mais comment puis-je afficher les données dérivées calculées par le service? Ou peut-être que je pourrais avoir un «nouvel employé en attente de graphique» affiché sur la grille s'il n'a pas encore été créé, puis faire revenir la page chaque seconde jusqu'à ce qu'elle l'ait fait?
Ceci est un scénario commun alors quelle est la solution commune pour cela?
Le calcul est-il si complexe? Combien de temps faudra-t-il habituellement pour calculer les données? –
@DanielMarbach Il pourrait être presque instantané mais vous ne pouvez pas le garantir. –
Si vous êtes épinglé à des grilles, alors il ne vaut probablement pas la peine d'appliquer les principes de l'EDA. L'approche RPC devrait être très bien dans ce cas. –