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)
Antwort
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, ...
Danke für Ihre Erklärung, ich bin in der Tat neu für CQRS. – user522037
- 1. Event-Handler in DataTemplate
- 2. Prevent andere Event-Handler, von der ersten Handler, in jQuery
- 3. Singleton PHP - Datenbank-Handler
- 4. session_regenerate_id und Datenbank-Handler
- 5. WPF ohne Event-Handler
- 6. Event-Handler in XAML oder Code hinter
- 7. JavaScript-Event-Handler Argumente
- 8. jQuery Event-Handler
- 9. Die beste Methode zum Speichern von Benutzerpunkten in der Datenbank
- 10. Entfernen Event-Handler
- 11. jQuery onhide Event-Handler
- 12. Exitierter Event-Handler, der die Anwendung zum Schließen zwingt
- 13. Event-Handler existiert
- 14. Hinzufügen von eigenen Event-Handler vor anderen Event-Handler
- 15. Event-Handler-Vererbung
- 16. MsftDiscFormat2Data Event Handler
- 17. Elixir Event Handler
- 18. Android: Keyboard Event-Handler
- 19. Snap.svg - Drag Event Handler
- 20. Event-Handler-Parameter eingeben
- 21. Event-Handler-Null
- 22. jQuery Event-Handler nicht
- 23. Serversteuerung Event Handler?
- 24. SSIS OnError-Event-Handler, der keine fehlgeschlagene Datenbankverbindung auslöst
- 25. Überschreiben Rückgabewert in Event-Handler?
- 26. Javascript Event-Handler für Print
- 27. Event Handler Windows Phone 7
- 28. Ändern und Keyup Event Handler in JQuery
- 29. Event-Handler mit Parametern React
- 30. Was ist der Unterschied zwischen Event-Handler und Event-Listener?
vielleicht hilft dies http://www.udidahan.com/2009/12/09/geklärt-cqrs/Es ist ein wirklich guter Beitrag von Udi Dahan. – roundcrisis