Comando-Consulta-Responsabilidad-Segregación
Principio funcional de CQRS con abastecimiento de eventos
La Segregación de Responsabilidad de Consulta de Comando ( CQRS , [ kə'mæ: nd 'kwɪ (ə) ri: ri, spɑnsə'bɪləti, sɛgrɪ'geiʃ ( ] ) n ] o [ si: kju: ɑ: r ,s ], en inglés para tales como "Separación de responsabilidades de consultas de comandos") es un patrón de diseño para consultas de bases de datos que fue definido por Greg Young .
El patrón CQRS propaga una división del modelo de objetos en dos modelos de objetos con respecto al acceso a la base de datos:
- un modelo de objeto para acceso de lectura
- un modelo de objeto para acceso de escritura
A diferencia de una vista CRUD para acceder a una base de datos, donde un objeto común es responsable de las consultas, así como de leer, escribir y eliminar, hay dos objetos con CQRS: comandos para escribir (cambiar y eliminar) y consultas para leer.
ventajas
- Diferente escalabilidad , los accesos de escritura se pueden ejecutar en otras computadoras que los accesos de lectura y cada uno se puede escalar de manera diferente.
- Adecuado para su uso en arquitecturas orientadas a servicios , por ejemplo, en computación en la nube
- Seguridad mejorada a través de roles separados para operaciones de lectura y escritura
- Es posible el uso simultáneo de diferentes versiones del mismo software
- Es posible mantener la compatibilidad con versiones anteriores
- La migración a la nueva versión en funcionamiento en directo posible y sin tiempo de inactividad
- Adaptabilidad a los requisitos comerciales modificados
- Desarrollo de los componentes individuales por diferentes equipos
- Se puede combinar con el abastecimiento de eventos.
desventaja
- Alto esfuerzo en desarrollo de software. Más adecuado para proyectos con muchos usuarios simultáneos.
- Requiere la infraestructura adecuada.
- Las transacciones son difíciles de implementar.
- Las consultas se pueden realizar antes de ejecutar los comandos. Por lo tanto, se requieren versiones y una memoria caché en memoria para garantizar que el cliente reciba los datos en la versión correcta.
Frameworks
- .NETO
- Tyrone Groves: SimpleCQRS. En: GitHub. Consultado el 21 de julio de 2014 .
- El marco de Ncqrs. En: GitHub. Consultado el 13 de julio de 2014 (inglés, marco CQRS para .NET framework ).
- JVM
- AxonIQ. Recuperado el 10 de marzo de 2020 (inglés, marco CQRS para el entorno de ejecución de Java ).
- JavaScript
- wolkenkit. Consultado el 27 de junio de 2017 (inglés, CQRS, DDD y marco de abastecimiento de eventos para JavaScript).
- PHP
- prooph. Consultado el 1 de febrero de 2018 (inglés, CQRS e infraestructura de abastecimiento de eventos para PHP).
literatura
- Chris Richardson: Patrones de microservicios . Manning, Shelter Island NY 2019, ISBN 978-1-61729-454-9 , págs. 228-252 (inglés americano).
enlaces web
- Viaje de CQRS. En: patrones y prácticas, MSDN. Microsoft, julio de 2012, consultado el 13 de julio de 2014 (inglés, tutorial sobre CQRS y abastecimiento de eventos en C # ).
- Kanasz Robert: Introducción a CQRS. En: CodeProject. 21 de marzo de 2013, consultado el 13 de julio de 2014 (inglés, Introducción a CQRS en C # ).
- Greg Young: CQRS / DDD por Greg Young. En: YouTube. Rinat Abdullin, 20 de enero de 2012, consultado el 13 de julio de 2014 (inglés, Introducción a CQRS y DDD ).
- Lev Gorodinski: diseño basado en dominios, abastecimiento de eventos y CQRS con F # y EventStore. En: YouTube. DC F # Meetup, 6 de marzo de 2014, consultado el 13 de julio de 2014 (inglés, CQRS y EventSourcing en F # ).
- Golo Roden, Matthias Wagler, Susanna Roden: wolkenkit : el backend semántico de JavaScript para el desarrollo impulsado por eventos . Obtenido el 9 de julio de 2017 (PDF, inglés, introducción a CQRS, DDD y abastecimiento de eventos)
hinchar
- ↑ Martin Fowler: CQRS. 14 de julio de 2011, consultado el 18 de mayo de 2014 .
- ^ Greg Young: Documentos de CQRS por Greg Young. (PDF) En: WordPress. Noviembre de 2010, consultado el 13 de julio de 2014 .
- ↑ http://codebetter.com/gregyoung/2010/02/16/cqrs-task-based-uis-event-sourcing-agh/