Bonjour,
Pour donner un tout petit peu de contexte, je n'ai pour le moment travaillé qu'avec SQLite, qui vient avec son API. Je n'ai donc aucune expérience avec ADO.net, à part avoir suivi un tutoriel basique.
Au sein d'un système, j'ai un module qui gère des travaux à effectuer. Ces travaux ont des états (ils peuvent être en pause, en cours d'éxecutions, terminés, etc....), des paramètres, et des données. Ce module utilise donc une base de données (SQLite) pour stocker la liste des travaux, leurs paramètres, et un chemin vers où sont stockées les données sur le disque. Ce module annonce les travaux ainsi que leurs états et paramètres à d'autres modules du système (des UI par exemple). Du coup j'ai une interface entre ce module et les autres modules afin de pouvoir annoncer qu'un nouveau travail vient de démarrer son exécution, ou qu'un autre est terminé, etc....
Le soucis, c'est que l'on s’aperçoit que finalement dans notre système presque tout le monde a besoin de connaitre les états et paramètres de ces fameux travaux, et ce pour des tas de raisons différentes. Avoir à passer par ce module qui gère les travaux pour connaitre les états des travaux devient une usine à gaz car il faut en permanence étendre l'interface de ce module pour les nouveaux besoin des différents clients.
Il a donc été décider de sortir la base de données de ce module qui reste le seul à gérer les cycles de vies des travaux, et remplacer SQLite par un SQL server. On veux un système où les modules qui veulent connaitre l'état des travaux s'enregistrent auprès de la base de données, et reçoivent des notifications lorsque des états des travaux changent. On veut vraiment un mécanisme de notification pour éviter de faire du polling.
Du coup on m'a conseillé de regarder du côté de ADO.NET ce qu'il est possible de faire. D'où ma question, existe t'il dans l'API de ADO.NET des mécanismes de notification? Si oui, pourriez vous pointer vers de la documentation ou un tutorial concernant ce mécanisme de notification? Dans le cas contraire, est-ce que vous avez des idées sur comment mettre ceci en place?
Merci beaucoup pour votre aide.
Partager