Command Query Responsibility Segregation (CQRS)
CQRS is an abbreviation for Command Query Responsibility Segregation, a term attributed to Greg Young. The concept is that you use a different model to update information than the model used for reading information. The two main reasons for implementing CQRS are when the storage of a model differs dramatically from the presentation of the model, and when the concepts behind this approach are that attempting to create a model that is optimized for storage and a model that is optimized for display might solve neither problem. For this reason, CQRS splits these models into a Query model used by the presentation logic, and a Command model that is used for storage and validation. The other benefit is when we would like to separate the load between reads and writes in high-performance applications. The CQRS pattern is not something that is hugely common and certainly should not be used everywhere as it does increase complexity; however, it is a very...