What is CQRS? Well if we ask google it will say “did you mean CARS?” (although it seems for developers who search a lot it now actually comes up.
According to http://www.all-acronyms.com/CQRS CQRS is Commercial Quality Rimmed Steel
CQRS is none of these things. CQRS is not new. One of my favorite questions I get from people is “How many real systems are there running with this kind of CQRS stuff”. The answer is ten if not hundreds of thousands. It even funnier when asked about Event Sourcing as I actually worked on a system 10 years ago using Event Sourcing (it used to be really popular).
CQRS is pretty much MVC!
I have had very few people notice this when teaching but occasionally a bright one will pick up on it. Of course CQRS is not precisely MVC but it is definitely a variant. Let’s go way back to 1979 and look at what Trygve had to say about MVC. http://heim.ifi.uio.no/~trygver/1979/mvc-2/1979-12-MVC.pdf
Models represent knowledge. A model could be a single object (rather uninteresting), or it
could be some structure of objects.
The proposed implementation supports knowledge represented in something resembling semantic nets (If I understand Laura correctly)
There should be a one-to-one correspondence between the model and its parts on the one
hand, and the represented world as perceived by the owner of the model on the other hand.
The nodes of a model should therefore represent an identifiable part of the problem.
The nodes of a model should all be on the same problem level, it is confusing and considered
bad form to mix problem-oriented nodes (e.g. calendar appointments) with implementation
details (e.g. paragraphs).
A view is a (visual) representation of its model. It would ordinarily highlight certain attributes
of the model and suppress others. It is thus acting as a presentation filter.
A view is attached to its model (or model part) and gets the data necessary for the presentation
from the model by asking questions. It may also update the model by sending appropriate
messages. All these questions and messages have to be in the terminology of the model, the
view will therefore have to know the semantics of the attributes of the model it represents. (It
may, for example, ask for the model’s identifier and expect an instance of Text, it may not
assume that the model is of class Text.)
CQRS is also very similar to P-7: INPUT/OUTPUT SEPARATION in http://heim.ifi.uio.no/~trygver/2003/javazone-jaoo/MVC_pattern.pdf
The input and output aspects of the Editor are technically very different with few interdependencies. Their
If you are from Australia they are trying to get me to come down. Could you fill out this?