Thank you to everyone who participated in my webinar about CQRS today. A special thanks to Jean-Paul Boodhoo for inviting me to be a part of his Develop with Passion Webinar series. Unfortunately, I did not have the time to cover as many topics as I would have liked. Maybe we’ll have a “Part 2” webinar in the near future to cover the more advanced topics.
In the mean time, you can dig into the code I went through in the webinar. It is available on GitHub at https://github.com/jsmale/TimeTrackerCQRS. There is some additional code there that I did not have a chance to cover. That includes another set of commands and events (StopTask), and some code for using a persistent event store and view model (as opposed to the in-memory ones we used in the demo) using RavenDB.
There is also a commented out section in the Bootstrapper that can be used re-populate the view model from the event store. This works perfectly if you use the RavenEventStore along with the in-memory PersistentViewModel, but I have so far been unable to get it working with the RavenPersistentViewModel (maybe someone can take a look and submit a pull request?). In any case, this technique allows you to create new view models, or modify existing ones, and have them populated with events that occurred from the beginning of time (or at least since your was released to production). You could even use this technique to keep your view model in-memory for production.
If you have any questions about the code, or CQRS in general, feel free to ping me @jasonsmale on twitter.
Oh, any if you want to review the few slides I had, the PowerPoint is also available on GitHub here.