Kommando-spørring-ansvar-segregering
Funksjonelt prinsipp for CQRS med sourcing av hendelser
Den Kommandospørre ansvar Segregering ( CQRS , [ kə'mæ: nd 'kwɪ (ə) ri: ri, spɑnsə'bɪləti, sɛgrɪ'geiʃ (ə) n ] eller [ Si; KJU: ɑ: r ɛs ], engelsk for slike som "Command Query Separation of Responsibilities") er et designmønster for databasespørsmål som ble definert av Greg Young .
CQRS-mønsteret forplanter en inndeling av objektmodellen i to objektmodeller med hensyn til tilgang til databasen:
- en objektmodell for lesetilgang
- en objektmodell for skrivetilgang
I motsetning til et CRUD- syn for tilgang til en database - der et felles objekt er ansvarlig for spørsmål så vel som for lesing, skriving og sletting - er det to objekter med CQRS: kommandoer for skriving (endring og sletting) og spørsmål å lese.
fordeler
- Ulike skalerbarhet , skrivetilgang kan kjøres på andre datamaskiner enn lesetilganger, og hver kan skaleres forskjellig.
- Egnet for bruk i serviceorienterte arkitekturer , for eksempel i cloud computing
- Forbedret sikkerhet gjennom separate roller for lese- og skriveoperasjoner
- Samtidig bruk av forskjellige versjoner av samme programvare er mulig
- Å opprettholde bakoverkompatibilitet mulig
- Migrering til den nye versjonen i live-drift mulig uten nedetid
- Tilpasning til endrede forretningskrav
- Utvikling av de enkelte komponentene av forskjellige team
- Kan kombineres med event sourcing
ulempe
- Stor innsats innen programvareutvikling. Mer egnet for prosjekter med mange samtidige brukere.
- Krever riktig infrastruktur.
- Transaksjoner er vanskelige å gjennomføre.
- Spørringer kan utføres før kommandoer er utført. Versjonering og hurtigbuffer er derfor nødvendig for å sikre at klienten mottar data i riktig versjon.
Rammeverk
- .NETT
- Tyrone Groves: SimpleCQRS. I: GitHub. Hentet 21. juli 2014 .
- Ncqrs-rammeverket. I: GitHub. Hentet 13. juli 2014 (engelsk, CQRS framework for .NET framework ).
- JVM
- AxonIQ. Hentet 10. mars 2020 (engelsk, CQRS-rammeverk for Java runtime-miljø ).
- JavaScript
- wolkenkit. Hentet 27. juni 2017 (engelsk, CQRS, DDD og event sourcing framework for JavaScript).
- PHP
- prooph. Tilgang 1. februar 2018 (engelsk, CQRS og Event Sourcing Infrastructure for PHP).
litteratur
- Chris Richardson: Microservices Patterns . Manning, Shelter Island NY 2019, ISBN 978-1-61729-454-9 , pp. 228-252 (amerikansk engelsk).
weblenker
- CQRS Journey. I: mønstre og praksis, MSDN. Microsoft, juli 2012, åpnet 13. juli 2014 (engelsk, Tutorial on CQRS and Event Sourcing in C # ).
- Kanasz Robert: Introduksjon til CQRS. I: CodeProject. 21. mars 2013, åpnet 13. juli 2014 (engelsk, introduksjon til CQRS i C # ).
- Greg Young: CQRS / DDD av Greg Young. I: YouTube. Rinat Abdullin, 20. januar 2012, åpnet 13. juli 2014 (engelsk, Introduksjon til CQRS og DDD ).
- Lev Gorodinski: Domain-Driven Design, Event Sourcing og CQRS med F # og EventStore. I: YouTube. DC F # Meetup, 6. mars 2014, åpnet 13. juli 2014 (engelsk, CQRS og EventSourcing i F # ).
- Golo Roden, Matthias Wagler, Susanna Roden: wolkenkit - Den semantiske JavaScript-backend for hendelsesdrevet utvikling . Hentet 9. juli 2017 (PDF, engelsk, introduksjon til CQRS, DDD og event sourcing)
hovne opp
- ↑ Martin Fowler: CQRS. 14. juli 2011, åpnet 18. mai 2014 .
- ^ Greg Young: CQRS-dokumenter av Greg Young. (PDF) I: WordPress. November 2010, åpnet 13. juli 2014 .
- ↑ http://codebetter.com/gregyoung/2010/02/16/cqrs-task-based-uis-event-sourcing-agh/