Implementing DDD: Part 1 - The grand overview
Introduction
Over the last couple of years I’ve been evolved in designing and implementing applications using domain driven design. I didnt come without a cost, but in the end we managed to find some pattern and a architectural style that helped us immensely.
Our focus for this series is to build the scaffolding serverside architecture, and paving way for developers stay focused on business objectives instead of Yak shaving
We are going to cover quite abit, so lets get started!
Architectural overview
We start out by defining the the concepts in our architecture the buttom up
- Core
- Infrastructure
- Host
These guys is the three layers in our Onion/hexagonal architectures where the infrastructure layer has a dependency on core, and host has a dependency on both Infrastructure and core.
This stack is ment to be pr. bounded context, where one application clearly defines in business area. This however can be scalled and it can work beatifully together in a destributed environment. We will be covering this as well, but we have stretch to go.

We will cover all three layers extensively in the upcomming posts but here is a brief overview
Core
This project will include All of our aggregate roots, value objects. And it is here that we are going to define our businesslogic by creating higly maintainable Aggregate roots and by any means avoid creating an anemic domain model.
Infrastructure
In here we are going to deal Domain event thrown from the core, implementing domain services, and deal with RavenDb and Rebus message bus.
Host
The host is simply how are we going to run the application, is it throught a windows- or web-service or even a third option.
Technologies
- RavenDb - We have had alot of success implementing applications using Ravendb, and for that particular reason we are going to do the same!
- Rebus - My favorite message bus!
- Castle Windsor - For all our ioc needs.