Lately a very interesting pattern has emerged, the Command Query Responsibility Segregation (CQRS) pattern. It is actually an existing software pattern that is being applied on a higher level, that is a framework level. It comes down to seperating the domain model and domain logic from the read model. The pattern gives the advantages of high scalability and removes quite some concerns which are introduced by using the domain model for querying, for which it simply isn't well suited.
CQRS and Event Sourcing seem to go hand in hand. Event sourcing is a way of storing state by storing the stack of events that led to the state instead of storing the state itself.
- The foundation for the CQRS pattern is DDD, a set of patterns described by Eric Evans in his book Domain-Driven Design.
- Video "CQRS introduction for beginners": http://jonathan-oliver.blogspot.com/2010/02/cqrs-introduction-for-beginners.html
- Video by Greg Young about CQRS: http://www.infoq.com/presentations/greg-young-unshackle-qcon08
- A hands-on explanation by Mark Nijhof: http://elegantcode.com/2009/11/11/cqrs-la-greg-young/ and a follow-up post: http://elegantcode.com/2009/11/20/cqrs-the-domain-events/. He has several posts on the topic, but these two are the most important ones.
- Update 2010-03-23 A nice overview: DDDD, CQRS and Other Enterprise Development Buzz-words
The AgrCQRS framework is written for the .NET framework 3.5 in C#.