Software Design Blog

Journey of Rinat Abdullin

Lokad.CQRS - Code Preview for "Anatomy of Distributed Systems"

I just finished updating Lokad.CQRS Sample Project to match the codebase for Anatomy of Distributed System à la Lokad. This happened in anatomy branch.

This is an early preview of what will be the next master later. If you are following Lokad development closely, then it might be worth checking out changes to get early heads-up (go to anatomy branch). If you are new to Lokad.CQRS Sample Project codebase, then I’d recommend you to wait for the official update.

Most important changes:

  • Atomic Containers became Document Storage. These are mostly semantic changes in naming (and subtleties related to “buckets”), which actually provide foundation for self-rebuilding views which are managed by the server (life-saver for organizations that leverage ES so heavily that they have dozens of view projections around for various purposes).

  • Wiring logic for bounded contexts became more explicit. Check out DomainBoundedContext class and you’ll understand what I mean. Bounded context wiring classes are new inversion of control containers.

  • Replaced Aggregate Factories with per-aggregate Aggregate Handlers. This is a small change that actually simplified a lot of scenarios in production and enables basics of event merging and event pushing. Event Sourcing story is better a bit.

  • DSL Became slightly more powerful and integrated into the overall development experience. I plan to drop a video that actually shows how fast it is do add new behaviors to aggregate roots. Paris CQRS Beers saw a quick demo of all this stuff.

There were also numerous naming improvements and fixes, based on recent experience. They are also based on suggestions and feedback by Vaughn Vernon and Jeremie Chassaing.

I hope this helps.

PS: This is not the entire update. There are a few more things planned to improve development experience.