The term CQRS was coined around four years ago. The technology-independent, platform-neutral concept of segregating commands and queries is, however, much older and is now a tried and tested architecture model. CQRS allows greater design flexibility for software system architecture and provides solutions to a range of common software development problems. For developers and architects, this principle, based on simple ideas, has become an important tool alongside or in place of heavyweight frameworks. But CQRS also has much to offer project managers. The fundamental separation between user interfaces, business logic and data preparation simplifies assignment of teams based on skills and experience.
In recent times, CQRS-related design precepts have been a frequent topic of discussion at conferences and in publications well beyond just the .NET field, within which CQRS was first formulated by Greg Young. In summer 2012, CQRS was even honoured with the publication of architecture guidance by Microsoft's Pattern & Practices Group. A steady rise in use in practice is evident from the increase in enquiries within the active DDD/CQRS Google group, where CQRS is being further defined and developed and help is provided to both beginners and experts.
Marco Heimeshoff is head of the software development department at Osnabrück-based ASD Personalinformationssysteme GmbH and blogs at heimeshoff.de.
Philip Jander is a freelance software developer and instructor specialising in .NET and is based in Münster.
- Greg Young; CQRS Introduction
- Greg Young; CQRS and Event Sourcing
- Udi Dahan; Clarified CQRS
- Martin Fowler; CQRS
- Bertrand Meyer; Object-Oriented Software Construction (2nd edition); Prentice Hall, 1997, S. 751
- Martin Fowler; Command Query Separation
- Robert C. Martin; Agile Software Development, Principles, Patterns, and Practices; Prentice Hall, 2002, S. 149, an excerpt
- Martin Fowler, Further Patterns of Enterprise App. Architecture – Event Sourcing
- Eric Evans; Domain Driven Design; Addison-Wesley, 2003
- Jimmy Nilsson; Applying Domain Driven Design and Patterns; Addison-Wesley, 2006
- Vernon Vaughn; Implementing Domain Driven Design; Addison-Wesley, 2013, an excerpt
- Martin Fowler; Refactoring; Addison-Wesley, 2000, S. 295