2011-01-12 8 views
5

Ich studiere gerade CQRS, und ich sehe einige Quellcodes (Greg Young's SimpleCQRS und Mark Nihjof's). Ich verwechsle immer noch mit Befehl und Domänenereignis. Müssen wir die Domäne immer in Domäne-Ereignishandler "Datenbank schreiben" beibehalten? Ist es üblich, wenn ich den Code zum Speichern der Domäne in der Datenbank in Command-Handler (in der Regel durch Domain-Repository) aufrufen, und dann den Domain-Event-Handler andere Dinge behandeln lassen (wie: Aktualisieren des Lesemodells und andere Dienste wie E-Mail-Benachrichtigung) . Danke.Der beste Ort zum Speichern der Datenbank Datenbank in CQRS (Command Handler oder Domain Event Handler)

+0

vielleicht hilft dies http://www.udidahan.com/2009/12/09/geklärt-cqrs/Es ist ein wirklich guter Beitrag von Udi Dahan. – roundcrisis

Antwort

7

Speichern von Ereignissen: Ich würde keine Ereignisse mit einem Event-Handler anhalten. Das Delegieren von einem Command-Handler an ein Repository oder eine Arbeitseinheit ist wahrscheinlich der gängigste Ansatz beim Verwenden von Event-Sourcing. Also, es ist üblich, die Persistenz im Commandhandler zu machen (also, delegiere es) und den Event-Handler andere Dinge tun zu lassen.

Speicherstatus: Wenn keine Ereignisspeicherung verwendet wird, gehe ich davon aus, dass Personen Ereignisse neben Status speichern oder gar nicht (Verwendung einer Warteschlange als Persistenzmechanismus). Dennoch befindet sich die Persistenzlogik im Raum des Commandhandlers.

Befehle erfassen Absicht und teilen dem System mit, was zu tun ist. Benutze immer den Imperativ. Ereignisse erfassen Absicht und erzählen, was im System passiert ist. Immer in der Vergangenheitsform.

Sie scheinen mich als jemand neues zu diesem Thema. Das Beste, was Sie tun können, um die Konzepte von CQRS zu verstehen, ist das Betrachten von Material unter http://cqrsinfo.com und http://skillsmatter.com (architecture/ddd). Andere Leute, die über dieses Thema bloggen (von oben auf meinem Kopf): Udi Dahan, Gregory Young, Jonathan Oliver, Rinat Abdullin, Jérémie Chassaing, ...

+0

Danke für Ihre Erklärung, ich bin in der Tat neu für CQRS. – user522037