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.
- 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
- 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)
- 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.