This is a sample application showcasing a DDD/CQRS architecture with Event Sourcing with a number of excellent open source software technologies. I (Henrik) want to make it easy for people to get started with this architecture - why not try to maximize developer happiness and make the world a better place and learn it yourself while you're at it?
Some of the concepts you can learn include:
Currently incomplete but upcoming features:
The above tasks are rather easy to accomplish, they just take a few hours worth of time - so if you feel up for learning the concepts of CQRS and Event Sourcing, feel free to have a go and send a pull-request!
First, start the event-store and view-store - RavenDB.Server, in this case. It can be found in src\packages\RavenDB.1.x.x\server
. Once this is done, install RabbitMQ
There are two sample clients: one WPF Client with a nice UI and one console application for a quick start. Before using them, you need to compile the solution and start the Documently.Domain.Service
console application. This is the domain service that handles the domain logic and broadcasts the (domain) events.
Once both RavenDB and the Domain Service are started without error messages, start one of the clients, or both and try it out!
Note: When starting Domain Service the first time you will need to run it as admin to avoid getting error messages from MassTransit's Performance Counters - or you can run it and just ignore those messages.
The sample is based on code by:
CommonDomain documentation at https://github.com/haf/CommonDomain/wiki/Intro-to-Common-Domain You can find more information about CQRS in the wiki: https://github.com/haf/Documently/wiki