Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I would like to explain CQRS to my team of developers. I just can't figure out how to explain it in the simplest way so they can implement the pattern rapidly without any others frameworks. I've read a lot of resources including video and articles but I don't find how to implement CQRS without using others patterns like a service Bus, event sourcing pattern, domain driven design. I know the purpose of these pattern but for the first step, I don't want them to think CQRS and these patterns must be tied together.

My first idea is to say that CQRS is about separating the read part and the write part. The read part is composed only of the UI project, and DAL project. Then the write part is composed of a typical multilayer architecture: UI/BLL/DAL. Then, does CQRS say we must also have two datastore ? What about the notion of commands which reveal the user's intention, is it also something part of CQRS or DDD ?

Basically, how to implement CQRS without using others patterns. I concede it's also not that clear in my mind because I've used to work with NCQRS/DDD/Event Sourcing/ServiceBus in my personal project.

share|improve this question

migrated from Nov 22 '11 at 6:33

This question came from our site for professional and enthusiast programmers.

Rob Ashton wrote a great and worthwhile blog post about this very topic, (ironically) titled CQRS is too complicated. – Dennis Traub Nov 20 '11 at 13:31
Here is a POC I wrote, which is not particularly pretty, but it explains the CQRS part pretty well IMO. – Tom Dec 5 '11 at 16:55
thx, i ll take a look – John Smith Dec 9 '11 at 12:55
up vote 4 down vote accepted

There are several ways of going about this. You know your team best. It's best to ask yourself at what level of abstraction you need to speak for them to comprehend.

Cqrs is really about seperating read logic from write logic. This is best explained by comparing it to todays layered architecture as promoted by database vendors (video section over on does a good job at that), mostly because people can relate to it and see how the changes you propose fit into that architecture. You could just stop at the argument that for the purpose of reading data there's no need to jump through all the hoops (of the write logic). No need to go any further (no seperate stores, ddd concepts, messaging, service bus, etc.). That said, there's much more value to be gained, both from a technical and functional perspective, if you pursue further. But again, 1 step at a time. Remember, people in general are not very fond of change (even if it's a good change). There's lots of value in the offspring of cqrs, but it requires careful judgement and assesment if it fits your team (and their maturity). Sometimes it's better to grow together than dragging people into something. Also, don't forget that management is not to be ignored either.

share|improve this answer
The link now points to a Chinese site selling footware. :( – MvdD Sep 23 '15 at 17:04

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.