2016-03-23 9 views
0

Ich habe vor kurzem mit dem CQRS-Muster experimentiert, und in einer Menge Dokumentation scheint es, dass Leute Befehle extern von der Anwendung an die Befehlshandler senden, die eine Warteschlange verwenden.Datenformat/Schema für Befehl in CQRS-Anwendung

Eine Sache, die mich interessiert, ist das Format, in dem Leute die Befehle senden? Ich kann sehen, dass JSON ein gutes Darstellungsformat ist, aber wie verwalten Sie die Versionsverwaltung der eingehenden Befehle?

Ich nehme an, dass es etwas gibt, das aus der Befehlswarteschlange lesen, die Parameter für den Befehl deserialisieren und dann über die CommandHandler-Implementierung ausführen muss.

Antwort

1

Es ist eine gute Frage. Es gibt ein paar Dinge zu überlegen, wenn man an Versionierung denkt. Ich mag eine Reihe von Prinzipien folgen:

  1. nie ein Feld
  2. nie ein Feld

jedoch löschen umbenennen, die Sie gerade in den Ruhestand oder Form eine ganz andere benötigen. In diesem Fall benutze ich gerne einen Postfix. z.B. _V2

Wichtig zu beachten ist, den Inhalt des Befehls auf einfache Typen zu beschränken. Es kann außergewöhnliche Umstände geben, wenn Sie komplexe Typen wünschen, aber ich würde versuchen, dies zu vermeiden.

Das Ändern von Befehlen ist auf lange Sicht weniger ein Problem (außer, wenn Sie Ihre Befehle aufzeichnen) als das Ändern/Versionieren von Ereignissen.

Falls es hilfreich ist, habe ich einen Blogbeitrag zu Versionsereignissen, ohne den Event-Stream zu sprengen. Sie können es finden: here

Hoffe es hilft!

+0

Danke für Ihre Antwort! Wenn Sie CQRS verwenden, verwenden Sie eine Warteschlange zum Senden der Befehle? – Aidos