Command and Query Responsibility Segregation
Command and Query Responsibility Segregation (CQRS) is a simple pattern to define. Objects are split into two new objects, with one being responsible for commands and the other responsible for queries.
Figure 2.9 – Applying CQRS to an object
Figure 2.9 demonstrates just how simple the concept might be, but the devil is in the implementation details as they say. The definitions for Command and Query are the same as they are for Command-Query Separation (CQS):
- Command: Performs a mutation of the application state
- Query: Returns application state to the caller
Note
In CQRS, just as it is in CQS, an action can either be a command or a query but not both.
The problem being solved
The domain models we’ve developed with the help of domain experts may be very complex and large. These complex models may not be useful or too much for our queries. Conversely, we may have complex queries...