Frage

  

Versioning
  Wenn Ihre Ereignisse Änderungen würden Sie eine neue Version dieses Ereignisses erstellen, und halten die alten. Um Ihre Domain Code Form zu halten wird aufgebläht mit allen Versionen von Ereignisbehandlung Sie würden im Grunde eine Komponente einführen, die auf neuere Versionen Ihre Ereignisse aus früheren umwandelt und sie dann auf der Domäne anwenden. Denken Sie daran, dass die Ereignisse sind die Dinge, die tatsächlich passiert ist in Ihrer Domain so in den meisten Fällen die Informationen in veralteten Ereignisse sind wertvoll.

Ich habe gefunden, noch kein Beispiel.

Jede Hilfe?

War es hilfreich?

Lösung

Es gibt zwei Möglichkeiten, um Griff Ereignis Konvertierungen. Beide passieren während Ereignis Deserialisierung:

  1. Sie können neue Klassen hinzufügen mit Versionsnummern (SomethingHappened, SomethingHappened2, SomethingHappened3). Der Deserializer wird instanziiert und die Klasse füllen, die es zu einem Konverter passieren das gleiche Ereignis in seiner höheren Version zu bekommen, hier SomethingHappened3. Eines der Probleme ist, dass Sie Event-Handler aktualisieren müssen werden auch die letzte Version der Veranstaltung zu nutzen. Zur Milderung dieser können Sie eine Konvention verwenden, dass SomethingHappened ist immer die letzte Version. Wann v2 gehen, SomethingHappened Umbenennungs als SomethingHappened1 und erstellen SomethingHappened, dass der v2 sein wird. Um dies zu erreichen Sie die Kontrolle über die Klassen von serialisierten Ereignisse erstellt haben müssen, da der serialisierten Klassenname wird nicht die Versionsnummer enthält, sollten Sie sie speichern, zur Seite.

  2. Statt jede Version der Klassen in Ihrem Code zu halten, der Konverter ein Dokument (einen Baum, wie ein XML-Dokument oder JSON-Objekt) erhalten und modifizieren Informationen benötigt, um die letzte Version zu bauen.

All dies hängt von der Kontrolle, die Sie auf Ihrer Deserialisierung Pipeline haben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top