This post is part of a series I am writing on Domain Driven Design (DDD).
Domain Driven Design promotes a layered design with the following layers
- User Interface (Presentation Layer) : Displays the information to the user and responds to user commands
- Application Layer: Defines the services provided by the application and directs the user commands to the domain layer that actually does the work. This layer does not contain any business rules. However its not simply a facade since it can be responsible for some high level orchestration. This orchestration adds value to this layer.
- Domain Layer: All the business processes/rules in the problem domain is contained here.
- Infrastructure and Technical Services Layer: Object persistence, messaging and other such technical services needed by the above layers. Will not contain any business logic but will be home to all framework code etc.