A collection of literature I recommend for reading on Event Sourcing/Event Stores and CQRS, to be extended over time. Ranges from high-level beginner material to implementation details and code samples.
Event Sourcing
Code
- NEventStore CommonDomain: Originally by Jonathan Oliver and now maintained as part of the NEventStore project, the CommonDomain is a great foundation for C# applications that want to use Event Sourcing and can also serve as a reference for ports into other languages.
- IDDD Sample application: The “Collaboration” Bounded Context of Vaughn Vernon’s sample code for this IDDD book (see below) uses event sourcing, see, e.g., the
Discussion
AR derived from the EventSourcedRootEntity
. This sample can get you started with Event Sourcing in Java very quickly.
- Lokad IDDD Sample: the source code for Rinat Abdullin’s chapter in the IDDD book (C#)
- .NET Event Sourcing: a lightweight framework for .NET, attempts to fill in the gaps between NServiceBus and NEventStore.
- AggregateSource: A lightweight infrastructure for doing eventsourcing using aggregates in C# by Yves Reynhout; see also AggregateSource Testing
Testing
Event Store
Code
- NEventStore: The implementation of the popular event store for .NET is a must-read: It’s very well designed and the code is easy to understand. It can serve as a template for implementation in other languages — in fact, our own JEEventStore was heavily influenced by it.
CQRS (including CQRS+ES)
Code Samples
DDD
Messaging
- The LMAX disruptor: Entry in Martin Fowler’s bliki. The LMAX disruptor a high-performance, single-threaded messaging architecture for the JVM that for a financial application handles up to 6 million order per second. Even if such scalability is way out of scope of most projects, you should be aware of it.
- NServiceBus: The most popular service bus for .NET. If you are going to use CQRS+ES in a C# project, you should look at this.
Updates to this post
- 2015-07-15: Added Gabriel Schenker’s blog series on Event Sourcing.