Question

  

Versioning
  Si vos événements change, vous créer une nouvelle version de cet événement, et de garder les anciens. Pour garder votre forme de code de domaine étant pléthorique avec la manipulation de toutes les versions des événements que vous souhaitez essentiellement introduire un composant qui convertit vos événements de précédent à des versions plus récentes, puis les appliquer sur le domaine. Rappelez-vous que les événements sont des choses qui est réellement passé dans votre domaine ainsi dans la plupart des cas les informations contenues dans les événements sont dépréciées précieux.

Je n'ai pas encore trouvé aucun exemple de cela.

Toute aide?

Était-ce utile?

La solution

Il existe deux façons de gérer les conversions d'événements. Les deux se produire pendant la désérialisation d'événement:

  1. Vous pouvez ajouter de nouvelles classes avec les numéros de version (SomethingHappened, SomethingHappened2, SomethingHappened3). Le désérialiseur va instancier et peupler la classe, le passage à un convertisseur pour obtenir le même événement dans sa version supérieure, ici SomethingHappened3. L'un des problèmes est que vous devrez également mettre à jour des gestionnaires d'événements à utiliser la dernière version de l'événement. Pour pallier cela, vous pouvez utiliser une convention qui SomethingHappened est toujours la dernière version. Lorsque vous allez v2, renommer SomethingHappened comme SomethingHappened1 et créer un SomethingHappened qui sera la v2. Pour ce faire, vous devez avoir le contrôle sur les classes créées à partir de l'événement sérialisé depuis le nom de classe sérialisée ne contiendra pas le numéro de version, vous devez stocker de côté.

  2. maintenant lieu toutes les versions des classes dans votre code, le convertisseur recevra un document (un arbre, comme un document XML ou objet JSON) et le modifier pour fournir des informations nécessaires à la construction de la dernière version.

Tout cela dépend de la commande que vous avez sur votre pipeline de désérialisation.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top