Updates on Lokad.CQRS - IDDD Branch

I've just finished pushing some code to Lokad.CQRS (iddd) branch. Some of the changes are listed below.

Last stable version of embedded event store. As you know, we've been working on one for our purposes. Lokad IDDD sample included beta version, which was polished and cleaned a bit since then by our production experience. That's what went to Lokad.CQRS

This event store (and underlying infrastructure) are based on bashio bitcask model in a simplified way (full in-memory caching, immediate persistence commits, SHA1 checks and crash-tolerance). New event store is more maintenance-friendly for cases when you have hundreds of thousands of event streams (they are no longer stored in individual files, but are rather interleaved within the same transaction log).

This store has two implementations out-of-the box: file system and azure blob storage (the latter uses efficient blob range posts to append to log files). IDDD sample also has SQL-based implementations.

This event store is multi-thread friendly (and tested to be so).

Simplified Lokad.CQRS core, which is used in new projects. I dropped a lot of things to simplify infrastructure and support future scenarios. Among these changes, message envelopes got really simplified and got proper SHA1 checks for their content. Startup projection rebuilder got a little bit smarter. This core is also a better fit for rapid DDD prototyping of persistence-ignorant systems.

Improved performance (a little bit), getting rid of two-phased-commit (aggregate events are appended to the store and get published in batches by a separate process, which no longer needs to access router).

This isn't the end of the work on this branch)since I have to get rid of complexity in "SimpleTesting" (reusing simpler one-file approach from IDDD sample) and drop a lot of complexity from SaaS sample (turning it rather into the project template).

However, I wanted to bring these changes to the attention of people that were asking for latest changes in Lokad.CQRS, compatible with the concepts from IDDD book. So, here you go.

- by .