Command Query Responsibility Segregation
Most systems has different requirements for the read and the write part of each bounded context. The requirements vary on what is needed to be written in relation to what is being read and used. The performance characteristics are also for the most part different. Most line-of-business applications tend to read a lot more than they write. CQRS talks about totally segregating the read from the write and treat them uniquely. One finds event sourcing often associated with CQRS, something that Dolittle has embraced and helps bridge the two sides and stay completely decoupled. It is an optional part of Dolittle but hightly recommended together with an event store.
Model View View Model
The model refers to state being used typically originating from a server component such as a database. It is often referred to as the domain model. In the context of Dolittle, this would typically be the ReadModel.
The view represents the structure and layout on the screen. It observes the ViewModel.
The ViewModel holds the state; the model and also exposes behaviors that the view can utilize.
In XAML the behaviors is represented by a command,
something that wraps the behavior and provides a point for execution but also the ability to check wether or not
it can execute. This proves very handy when you want to validate things and not be able to execute unless one is valid or is authorized.
Dolittle has the concept of commands, these are slightly different however. In fact, commands in Dolittle is a part of the domain.
It is the thing that describes the users intent. You can read more about them here.
can also be found here. Read more about the frontend commands
Part of connecting the View with the ViewModel and enabling it to observe it is the concept of binding. Binding sits between the View and the ViewModel and can with some implementations even understand when values change and automatically react to the change. In XAML, this is accomplished through implementing interfaces like INotifyPropertyChanged and INotifyCollectionChanged for collections.
For XAML and what is supported, read more in detail
A traditional MVVM would look something like this:
With the artifacts found in Dolittle and more separation in place with CQRS, the diagram looks slightly different
You can read more details about the MVVM pattern here.