Skip to content
Sample code for IDDD by Vaughn Vernon
C#
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
Library
Sample Blog post on handling failures in domain services Jul 19, 2012
UnitTests
.gitattributes
.gitignore
README.md
lokad-iddd-sample.sln

README.md

Sample code for IDDD Book by Vaughn Vernon

This is a .NET Sample Project to accompany Event Sourcing materials from the book by Vaughn Vernon: Implementing Domain-Driven Design.

Event Sourcing pattern was introduced to DDD world by Gregory Young. A+ES appendix in IDDD book and this sample are mainly based on his work in pushing the state of art in this field.

Contents

This project includes a sample domain implemented with the event sourcing pattern. Multiple persistence options are provided:

  • Microsoft SQL Server
  • MySQL
  • File storage
  • Windows Azure Blob Storage

Usage

Start by downloading sources (ZIP, Visual Studio) or by cloning a git repository:

$ git clone git://github.com/Lokad/lokad-iddd-sample.git

Then, open solution in Visual Studio (MonoDevelop might also work) and run the project. The project is auto-configured to use file storage by default, and cleans it on every start.

You should see something like:

Command: Create customer-12 named 'Lokad' with Eur
  customer-12 r0 Event: Customer Lokad created with Eur
  customer-12 r0 Event: Added 'Welcome bonus' 15 EUR | Tx 1 => 15 EUR
  Completed in 145 ms
Command: Rename customer-12 to 'Lokad SAS'
  customer-12 r1 Event: Customer renamed from 'Lokad' to 'Lokad SAS'
  Completed in 27 ms
Command: Charge 20 EUR - 'Forecasting'
  customer-12 r2 Event: Charged 'Forecasting' 20 EUR | Tx 2 => -5 EUR
  Completed in 16 ms

Then, you can dive into the code by starting with Domain folder in this solution. There also is a UnitTests project, which contains unit tests for the domain (in form of Given-When-Then specifications)

You can also try plugging in other types of event stores. Each event store requires connection string and will auto-create all required resources automatically.

Want More?

If you want more details, here's what you can do next:

If you have any questions, please feel free to ask the contributors.

Authors and Contributors

  • Vaughn Vernon, Book author and reviewer.
  • Rinat Abdullin, A+ES text and this sample project. Tech Leader at Lokad, Big Data Analytics for Retail.
  • Gregory Young, theory and practice of introducing Event Sourcing to Domain-Driven Design.

This sample is based hugely on inspiration and support provided by following outstanding gentlemen:

As for bugs in the code and typos in the accompanying texts, please feel free to attribute them to Rinat Abdullin. Reporting them (e.g. by dropping me a tweet or an email) would be extra cool :)

Something went wrong with that request. Please try again.