Event-Sourcing und Dictionary-Objekte
-
27-09-2019 - |
Frage
Wie Ereignis Sourcing kann mit verschiedenen Arten von Dictionary-Objekten wie Country
kombiniert werden, Region
, Time Zone
usw. und Dictionary-Typen von bestimmtem Domänenmodell wie Budget
oder Availability
Definitionen. Einige von Dictionary-Objekten sollten zu bearbeiten im Admin-UI, aber einige nicht möglich.
Zum Beispiel haben wir uns entschieden, dass wir Admin-UI nicht für Länder benötigen. So brauchen wir nicht AddCountry
/ RemoveCountry
Befehle zu implementieren.
Should i erzeugen von CountryAdded
Ereignisse gesetzt heißt should i-Dictionary-Objekte als Strom der Ereignisse bestehen? Haben wir jemals Quelle der Wahrheit anderen dann Ereignisstrom verwenden?
Falls ich ohne Ereignisstrom für Dictionary-Objekte gehen kann, wie Sie dieses Problem lösen:
Display Liste der Länder mit der Anzahl der Benutzer in jedem Land.
In diesem Fall ich brauche Darstellung Country
Objekte im Lese Modell mit Hörern für UserAdded
Ereignis.
Danke.
Lösung
Wenn Sie Ereignis Sourcing als Persistenzmechanismus verwenden, dann:
- Ereignisstrom ist die einzige Quelle der Wahrheit (Objekt erzeugte Momentaufnahmen aus Ereignisstrom verwendet werden könnte, um die Leistung zu verbessern, aber sie sind nur die Technik).
- Wenn Sie Ereignis Sourcing verwenden, brauchen Sie keine Veranstaltung explizit zu generieren - nur die tatsächlichen Ereignisse erzeugt veröffentlichen, während der Befehlsverarbeitung .
- Wenn Sie eine vordefinierte Liste von Ländern, die zu ändern nie gehen sind, können Sie nur schwer Code und Referenz sie durch ihre Ländercodes. Allerdings bedeutet dies, dass View-Modell und UI wissen, dass und Länder sind nicht zu ändern.
BTW empfehle ich Fragen wie diese DDD / CQRS Gruppe veröffentlichen. Es ist die aktivste Community auf die Fragen der CQRS / DDD / ES.