Thursday, May 06, 2010

May 27th: CQRS and Event Sourcing, an alternate architecture for Domain Driven Design

Most of us will be familiar with the standard 3- or 4-layer architecture you often see in larger enterprise systems. Some are already practicing Domain Driven Design and work together with the business to clarify the domain concepts. Perhaps you’ve noticed that is difficult to get the intention of the 'verbs' from that domain into this standard architecture. If performance is an important requirement as well, then you might have discovered that an Object-Relational Mapper and a relational database are not always the best solution.

One of the main reasons for this is the fact that the interests of a consistent domain that takes into account the many business rules, and those of data reporting and presentation are conflicting. That’s why Betrand Meyer introduced the Command Query Separation principle.

An architecture based on this principle combined with the Event Sourcing concept provides the ideal architecture for building high-performance systems designed using DDD. Well-known bloggers like Udi Dahan and Greg Young have already spent quite a lot of of posts on this, and this year’s Developer Days had some coverage as well.

But how do you build such a system with the. NET framework? Is it really as complex as some claim, or is just different work? If you want an answer to this, sign up for this evening and come see how I've built a concrete Silverlight demo app.

Subjects that I’ll cover:

  • Tasked-based UIs
  • Command Handling
  • Event Handling
  • Eventual Consistency
  • Repository & Aggregates
  • Versioning events and commands

You can find the latest details on this evening and the registration info here.