„Command-Query-Responsibility-Segregation“ – Versionsunterschied
Erscheinungsbild
[ungesichtete Version] | [ungesichtete Version] |
Inhalt gelöscht Inhalt hinzugefügt
→Frameworks: Nicht mehr gewartete und nicht CQRS-spezifische Frameworks entfernt |
|||
Zeile 28: | Zeile 28: | ||
== Frameworks == |
== Frameworks == |
||
;.NET |
;.NET |
||
* {{Internetquelle|url=https://github.com/tyronegroves/SimpleCQRS|titel=SimpleCQRS|sprache=en|werk=GitHub|autor=Tyrone Groves|zugriff=2014-07-21}} |
|||
* {{Internetquelle|url=https://github.com/ncqrs/ncqrs|titel=The Ncqrs Framework|werk=GitHub|sprache=en|kommentar=CQRS-Framework für das [[.NET Framework]]|zugriff=2014-07-13}} |
|||
* {{Internetquelle|url=https://github.com/eventflow/EventFlow|titel=EventFlow|werk=GitHub|sprache=en|kommentar=CQRS- und EventSourcing-Framework für [[.NET Core]]|zugriff=2021-11-30}} |
* {{Internetquelle|url=https://github.com/eventflow/EventFlow|titel=EventFlow|werk=GitHub|sprache=en|kommentar=CQRS- und EventSourcing-Framework für [[.NET Core]]|zugriff=2021-11-30}} |
||
; JVM |
|||
* {{Internetquelle|url=https://axoniq.io/|titel=AxonIQ|sprache=en|kommentar=CQRS-Framework für die [[Java-Laufzeitumgebung]]|zugriff=2020-03-10}} |
|||
; JavaScript |
; JavaScript |
Version vom 30. November 2021, 11:00 Uhr

Die Command Query Responsibility Segregation (CQRS, [ ] bzw. [ ],[1] englisch für etwa „Kommando-Abfrage-Zuständigkeitstrennung“) ist ein Entwurfsmuster für Datenbank-Abfragen, welches durch Greg Young definiert wurde.[2]
Das CQRS-Pattern propagiert eine Aufteilung des Objektmodells in zwei Objektmodelle hinsichtlich der Zugriffe auf die Datenbank:[3]
- ein Objektmodell für lesende Zugriffe
- ein Objektmodell für schreibende Zugriffe
Im Gegensatz zu einer CRUD-Sicht für die Zugriffe auf eine Datenbank – wo also ein gemeinsames Objekt für Queries genauso wie für Lesen, Schreiben und Löschen verantwortlich ist – gibt es bei CQRS zwei Objekte: Befehle zum Schreiben (Ändern und Löschen), sowie Abfragen zum Lesen.
Vorteile
- Unterschiedliche Skalierbarkeit, schreibende Zugriffe können auf anderen Rechnern laufen als lesende und jeweils unterschiedlich skalieren.
- Eignet sich zum Einsatz in Serviceorientierten Architekturen, etwa im Cloud Computing
- Verbesserte Sicherheit durch getrennte Rollen der Schreib- und Leseoperationen
- Simultaner Einsatz verschiedener Versionen derselben Software möglich
- Beibehaltung von Rückwärtskompatibilität möglich
- Migration auf neue Version im Live-Betrieb ohne Downtime möglich
- Anpassbarkeit an veränderte Geschäfts-Anforderungen
- Entwicklung der einzelnen Bestandteile durch unterschiedliche Teams
- Kann mit Event Sourcing kombiniert werden
Nachteile
- Hoher Aufwand in der Softwareentwicklung. Eignet sich eher für Projekte mit vielen gleichzeitigen Benutzern.
- Benötigt passende Infrastruktur.
- Transaktionen sind schwer umzusetzen.
- Querys können durchgeführt werden, bevor Commands durchgeführt wurden. Es werden daher Versionierung und ein In-Memory-Cache benötigt um sicherzustellen, dass der Client Daten in der richtigen Version erhält.
Frameworks
- .NET
- EventFlow. In: GitHub. Abgerufen am 30. November 2021 (englisch, CQRS- und EventSourcing-Framework für .NET Core).
- JavaScript
- wolkenkit. Abgerufen am 27. Juni 2017 (englisch, CQRS-, DDD- und Event-Sourcing-Framework für JavaScript).
- PHP
- prooph. Abgerufen am 1. Februar 2018 (englisch, CQRS und Event Sourcing Infrastruktur für PHP).
Literatur
- Chris Richardson: Microservices Patterns. Manning, Shelter Island NY 2019, ISBN 978-1-61729-454-9, S. 228–252 (amerikanisches Englisch).
Weblinks
- CQRS Journey. In: patterns & practices, MSDN. Microsoft, Juli 2012, abgerufen am 13. Juli 2014 (englisch, Tutorial zu CQRS und Event Sourcing in C#).
- Kanasz Robert: Introduction to CQRS. In: CodeProject. 21. März 2013, abgerufen am 13. Juli 2014 (englisch, Einführung in CQRS in C#).
- Greg Young: CQRS/DDD by Greg Young. In: YouTube. Rinat Abdullin, 20. Januar 2012, abgerufen am 13. Juli 2014 (englisch, Einführung in CQRS und DDD).
- Lev Gorodinski: Domain-Driven Design, Event Sourcing and CQRS with F# and EventStore. In: YouTube. DC F# Meetup, 6. März 2014, abgerufen am 13. Juli 2014 (englisch, CQRS und EventSourcing in F#).
- Golo Roden, Matthias Wagler, Susanna Roden: wolkenkit – The semantic JavaScript backend for event-driven development. Abgerufen am 9. Juli 2017 (PDF, englisch, Einführung in CQRS, DDD und Event-Sourcing)
Quellen
- ↑ Martin Fowler: CQRS. 14. Juli 2011, abgerufen am 18. Mai 2014 (englisch).
- ↑ Greg Young: CQRS Documents by Greg Young. (PDF) In: WordPress. November 2010, abgerufen am 13. Juli 2014 (englisch).
- ↑ http://codebetter.com/gregyoung/2010/02/16/cqrs-task-based-uis-event-sourcing-agh/