Domain Driven Design

What is DDD?

ABP provides an infrastructure to make Domain Driven Design based development easier to implement. DDD is defined in the Wikipedia as below:

Domain-driven design (DDD) is an approach to software development for complex needs by connecting the implementation to an evolving model. The premise of domain-driven design is the following:

  • Placing the project's primary focus on the core domain and domain logic;
  • Basing complex designs on a model of the domain;
  • Initiating a creative collaboration between technical and domain experts to iteratively refine a conceptual model that addresses particular domain problems.

Layers & Building Blocks

ABP follows DDD principles and patterns to achieve a layered application model which consists of four fundamental layers:

  • Presentation Layer: Provides an interface to the user. Uses the Application Layer to achieve user interactions.
  • Application Layer: Mediates between the Presentation and Domain Layers. Orchestrates business objects to perform specific application tasks. Implements use cases as the application logic.
  • Domain Layer: Includes business objects and the core (domain) business rules. This is the heart of the application.
  • Infrastructure Layer: Provides generic technical capabilities that support higher layers mostly using 3rd-party libraries.

DDD mostly interest in the Domain and the Application layers, rather than the Infrastructure and the Presentation layers. The following documents explains the infrastructure provided by the ABP to implement Building Blocks of the DDD:

Free E-Book: Implementing DDD

See the Implementing Domain Driven Design book as a complete reference. This book explains the Domain Driven Design and introduces explicit rules and examples to give a deep understanding of the implementation details.

Contributors


Last updated: July 31, 2024 Edit this page on GitHub

Was this page helpful?

Please make a selection.

To help us improve, please share your reason for the negative feedback in the field below.

Please enter a note.

Thank you for your valuable feedback!

Please note that although we cannot respond to feedback, our team will use your comments to improve the experience.

In this document
Community Talks

Building Modular Monolith Applications Using .NET and ABP Framework

17 Oct, 17:00
Online
Watch the Event
Mastering ABP Framework Book
Mastering ABP Framework

This book will help you gain a complete understanding of the framework and modern web application development techniques.

Learn More