So with cqrs, we accept that consistency is eventual.
However, that doesn't mean that the user has to continually poll, or that eventual means an update has to take more then 500ms to sync.
For the sake of UX, we want to at least give the illusion of consistency, or if not possible, be as transparent as possible.
With that in mind, I have this setup:
angularjs web client, consumes
webapi restful services, sends commands to
nservicebus command handlers, saves to
neventstore, dispatches events to
nservicebus event handlers, sends message to
signalr hub, sends notifications to
angularjs web client
so with that setup, theoretically
some initiates a request
the server validates the request
sends out the necessary commands
In the mean time
the client gets a 200 response
updates the view: working on it
gets message sometime later: done, here's the updated data
Here's where things get interesting, each command could spawn multiple events. Not sure if this is a serious no, no, or not, but that's how it is currently. For example, a new customer spawns CustomerIDCreated, CustomerNameUpdated, CustomerAddressUpdated, etc...
Which event handler needs to notify the client? Should all of them in a progress bar style update?