From 09726d2624482412b8f8b30b1e870107fd6fb445 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Sun, 22 Nov 2020 22:14:07 +0300 Subject: [PATCH 1/5] Initial Implementing Domain Driven Design --- ...main-Driven-Design-Implementation-Guide.md | 71 +++++++++++++++++- ...omain-driven-design-clean-architecture.png | Bin 0 -> 73376 bytes .../en/images/domain-driven-design-layers.png | Bin 0 -> 22182 bytes 3 files changed, 70 insertions(+), 1 deletion(-) create mode 100644 docs/en/images/domain-driven-design-clean-architecture.png create mode 100644 docs/en/images/domain-driven-design-layers.png diff --git a/docs/en/Domain-Driven-Design-Implementation-Guide.md b/docs/en/Domain-Driven-Design-Implementation-Guide.md index f2bc6d03f9..24b8fa2090 100644 --- a/docs/en/Domain-Driven-Design-Implementation-Guide.md +++ b/docs/en/Domain-Driven-Design-Implementation-Guide.md @@ -1,3 +1,72 @@ # Implementing Domain Driven Design -TODO \ No newline at end of file +## Introduction + +### Goals + +This is an **integrative guide** for implementing the Domain Driven Design (DDD). The goals of this document are; + +* **Introduce and explain** the DDD architecture, concepts, principles, patterns and building blocks. +* Explain the **layered architecture** & solution structure offered by the ABP Framework. +* Introduce **explicit rules** to implement DDD patterns and best practices by giving **concrete examples**. +* Show what **ABP Framework provides** you as the infrastructure for implementing DDD in a proper way. + +### Simple Code! + +> **Playing football** is very **simple**, but **playing simple football** is the **hardest thing** there is. +> — Johan Cruyff + +If we take this famous quote for programming, we can say; + +> **Writing code** is very **simple**, but **writing simple code** is the **hardest thing** there is. +> — ??? + +In this document, we will introduce **simple rules** those are **easy to implement**. + +Once your **application grows**, it will be **hard to follow** these rules. Sometimes you find **breaking rules** will save your time in a short term. However, the saved time in the short term will bring much **more time loss** in the middle and long term. Your code base becomes **complicated** and hard to maintain. Most of the business applications are **re-written** just because you **can't maintain** it anymore. + +If you **follow the rules and best practices**, your code base will be simpler and easier to maintain. Your application **react to changes** faster. + +## What is the Domain Driven Design? + +Domain-driven design (DDD) is an approach to software development for **complex** needs by connecting the implementation to an **evolving** model; + +DDD is suitable for **complex domains** and **large-scale** applications rather than simple CRUD applications. It focuses on the **core domain logic** rather than the infrastructure details. It helps to build a **flexible**, modular and **maintainable** code base. + +### OOP & SOLID + +Implementing DDD highly relies on the Object Oriented Programming (OOP) and [SOLID](https://en.wikipedia.org/wiki/SOLID) principles. Actually, it **implements** and **extends** these principles. So, a **good understanding** of OOP & SOLID helps you a lot while truly implementing the DDD. + +### DDD Layers & Clean Architecture + +There are four fundamental layers of a Domain Driven Based Solution; + +![domain-driven-design-layers](images/domain-driven-design-layers.png) + +**Business Logic** places into two layers, the *Domain layer* and the *Application Layer*, while they contains different kinds of business logic; + +* **Domain Layer** implements the core, use-case independent business logic of the domain/system. +* **Application Layer** implements the use cases of the application based on the domain. A use case can be thought as a user interaction on the User Interface (UI). +* **Presentation Layer** contains the UI elements (pages, components) of the application. +* **Infrastructure Layer** supports other layer by implementing the abstractions and integrations to 3rd-party library and systems. + +The same layering can be shown as the diagram below and known as the **Clean Architecture**, or sometimes the **Onion Architecture**: + +![domain-driven-design-clean-architecture](images/domain-driven-design-clean-architecture.png) + +In the Clean Architecture, each layer only **depends on the layer directly inside it**. The most independent layer is shown in the most inner circle and it is the Domain Layer. + +### Core Building Blocks + +DDD mostly focuses on the Domain & Application Layers and ignores the Presentation and Infrastructure. They are seen as *details* and the business layers should not depend on them. + +This section introduces the essential building blocks of the Domain & Application Layers. + +#### Domain Layer Building Blocks + +* **Entity**: An [Entity](Entities.md) is an object with its own properties (state, data) and methods that implements the business logic that is executed on these properties. An entity is represented by its unique identifier (Id). Two entity object with different Ids are considered as different entities. +* **Value Object**: A [Value Object](Value-Objects.md) is another kind of domain object that is identified by its properties rather than a unique Id. That means two Value Objects with same properties are considered as the same object. Value objects are generally implemented as immutable and mostly are much simpler than the Entities. +* **Aggregate & Aggregate Root**: An [Aggregate](Entities.md) is a cluster of objects (entities and value objects) bound together by an **Aggregate Root** object. The Aggregate Root is a specific type of an entity with some additional responsibilities. +* **Repository**: A [Repository](Repositories.md) is a collection-like interface that is used by the Domain and Application Layers to access to the data persistence system (the database). It hides the complexity of the DBMS from the business code. + +#### Application Layer Building Blocks \ No newline at end of file diff --git a/docs/en/images/domain-driven-design-clean-architecture.png b/docs/en/images/domain-driven-design-clean-architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..4ab6d2c93bb6247a79960972876247b2e9e5bb26 GIT binary patch literal 73376 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 iLK?&oJqwf#|C!sn&R#26 Date: Sun, 22 Nov 2020 22:55:07 +0300 Subject: [PATCH 2/5] Update Domain-Driven-Design-Implementation-Guide.md --- docs/en/Domain-Driven-Design-Implementation-Guide.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/docs/en/Domain-Driven-Design-Implementation-Guide.md b/docs/en/Domain-Driven-Design-Implementation-Guide.md index 24b8fa2090..b813a7a7cd 100644 --- a/docs/en/Domain-Driven-Design-Implementation-Guide.md +++ b/docs/en/Domain-Driven-Design-Implementation-Guide.md @@ -68,5 +68,12 @@ This section introduces the essential building blocks of the Domain & Applicatio * **Value Object**: A [Value Object](Value-Objects.md) is another kind of domain object that is identified by its properties rather than a unique Id. That means two Value Objects with same properties are considered as the same object. Value objects are generally implemented as immutable and mostly are much simpler than the Entities. * **Aggregate & Aggregate Root**: An [Aggregate](Entities.md) is a cluster of objects (entities and value objects) bound together by an **Aggregate Root** object. The Aggregate Root is a specific type of an entity with some additional responsibilities. * **Repository**: A [Repository](Repositories.md) is a collection-like interface that is used by the Domain and Application Layers to access to the data persistence system (the database). It hides the complexity of the DBMS from the business code. +* **Domain Service**: A [Domain Service](Domain-Services.md) is a stateless service that implements core business rules of the domain. It is useful to implement domain logic that depends on multiple aggregate (entity) type or some external services. +* **Specification**: A [Specification](Specifications.md) is used to define named, reusable and combinable filters for entities and other business objects. +* **Domain Event**: A [Domain Event](Event-Bus.md) is a way of informing other services in a loosely coupled manner, when a domain specific event occurs. -#### Application Layer Building Blocks \ No newline at end of file +#### Application Layer Building Blocks + +* **Application Service**: An [Application Service](Application-Services.md) is a stateless service that implements use cases of the application. An application service typically gets and returns DTOs. It is used by the Presentation Layer. It uses and coordinates the domain objects to implement the use cases. A use case is typically considered as a Unit Of Work. +* **Data Transfer Object (DTO)**: A [DTO](Data-Transfer-Objects.md) is a simple object without any business logic that is used to transfer state (data) between the Application and Presentation Layers. +* **Unit of Work (UOW)**: A [Unit of Work](Unit-Of-Work.md) is an atomic work that should be done as a transaction unit. All the operations inside a UOW should be committed on success or rolled back on a failure. \ No newline at end of file From bdbc128f64d7825dd7b248cc52ccacc9518372b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Sun, 22 Nov 2020 23:01:20 +0300 Subject: [PATCH 3/5] Update Domain-Driven-Design-Implementation-Guide.md --- docs/en/Domain-Driven-Design-Implementation-Guide.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/en/Domain-Driven-Design-Implementation-Guide.md b/docs/en/Domain-Driven-Design-Implementation-Guide.md index b813a7a7cd..6e5c601e24 100644 --- a/docs/en/Domain-Driven-Design-Implementation-Guide.md +++ b/docs/en/Domain-Driven-Design-Implementation-Guide.md @@ -58,7 +58,9 @@ In the Clean Architecture, each layer only **depends on the layer directly insid ### Core Building Blocks -DDD mostly focuses on the Domain & Application Layers and ignores the Presentation and Infrastructure. They are seen as *details* and the business layers should not depend on them. +DDD mostly **focuses on the Domain & Application Layers** and ignores the Presentation and Infrastructure. They are seen as *details* and the business layers should not depend on them. + +That doesn't mean the Presentation and Infrastructure layers are not important. They are very important. UI frameworks and database providers have their own rules and best practices that you need to know and apply. However these are not in the topics of DDD. This section introduces the essential building blocks of the Domain & Application Layers. From a37567d9f4e1667b94cc55ff16a4ae0f95d99110 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Sun, 22 Nov 2020 23:09:46 +0300 Subject: [PATCH 4/5] Update Domain-Driven-Design-Implementation-Guide.md --- .../Domain-Driven-Design-Implementation-Guide.md | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/docs/en/Domain-Driven-Design-Implementation-Guide.md b/docs/en/Domain-Driven-Design-Implementation-Guide.md index 6e5c601e24..b0a9692f83 100644 --- a/docs/en/Domain-Driven-Design-Implementation-Guide.md +++ b/docs/en/Domain-Driven-Design-Implementation-Guide.md @@ -78,4 +78,18 @@ This section introduces the essential building blocks of the Domain & Applicatio * **Application Service**: An [Application Service](Application-Services.md) is a stateless service that implements use cases of the application. An application service typically gets and returns DTOs. It is used by the Presentation Layer. It uses and coordinates the domain objects to implement the use cases. A use case is typically considered as a Unit Of Work. * **Data Transfer Object (DTO)**: A [DTO](Data-Transfer-Objects.md) is a simple object without any business logic that is used to transfer state (data) between the Application and Presentation Layers. -* **Unit of Work (UOW)**: A [Unit of Work](Unit-Of-Work.md) is an atomic work that should be done as a transaction unit. All the operations inside a UOW should be committed on success or rolled back on a failure. \ No newline at end of file +* **Unit of Work (UOW)**: A [Unit of Work](Unit-Of-Work.md) is an atomic work that should be done as a transaction unit. All the operations inside a UOW should be committed on success or rolled back on a failure. + +## Implementation: The Big Picture + +### Layering of a .NET Solution + +TODO + +### Execution Flow a DDD Based Application + +TODO + +### Common Principles + +TODO \ No newline at end of file From 6612bc7c8f3c6c582fd6097812299e792ef71ea3 Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Mon, 23 Nov 2020 10:28:38 +0800 Subject: [PATCH 5/5] Fix deutsch misspelling --- .../2020-11-02-How-To-Add-New-Language/POST.md | 2 +- .../MyProjectNameHttpApiHostModule.cs | 2 +- .../MyProjectNameHttpApiHostModule.cs | 2 +- .../MyProjectNameIdentityServerModule.cs | 2 +- .../MyCompanyName.MyProjectName.Web/MyProjectNameWebModule.cs | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/en/Community-Articles/2020-11-02-How-To-Add-New-Language/POST.md b/docs/en/Community-Articles/2020-11-02-How-To-Add-New-Language/POST.md index b1b2d08c20..f1387b2a50 100644 --- a/docs/en/Community-Articles/2020-11-02-How-To-Add-New-Language/POST.md +++ b/docs/en/Community-Articles/2020-11-02-How-To-Add-New-Language/POST.md @@ -28,7 +28,7 @@ Adding a new language to your ABP project is pretty simple. Let's add the Germa * open `MyProjectNameDomainModule.cs` and in `ConfigureServices` you'll find `Configure`. If you have `HttpApi.Host` project then you need to add this in `MyProjectNameHttpApiHostModule.cs` ``` - options.Languages.Add(new LanguageInfo("de-DE", "de-DE", "Deutsche", "de")); + options.Languages.Add(new LanguageInfo("de-DE", "de-DE", "Deutsch", "de")); ``` ![Add to languages](add-to-languages.png) diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/MyProjectNameHttpApiHostModule.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/MyProjectNameHttpApiHostModule.cs index 004733e389..e099b22391 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/MyProjectNameHttpApiHostModule.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/MyProjectNameHttpApiHostModule.cs @@ -135,7 +135,7 @@ namespace MyCompanyName.MyProjectName options.Languages.Add(new LanguageInfo("tr", "tr", "Türkçe")); options.Languages.Add(new LanguageInfo("zh-Hans", "zh-Hans", "简体中文")); options.Languages.Add(new LanguageInfo("zh-Hant", "zh-Hant", "繁體中文")); - options.Languages.Add(new LanguageInfo("de-DE", "de-DE", "Deutsche", "de")); + options.Languages.Add(new LanguageInfo("de-DE", "de-DE", "Deutsch", "de")); options.Languages.Add(new LanguageInfo("es", "es", "Español", "es")); }); } diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/MyProjectNameHttpApiHostModule.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/MyProjectNameHttpApiHostModule.cs index 512c08ac6b..9551cad310 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/MyProjectNameHttpApiHostModule.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/MyProjectNameHttpApiHostModule.cs @@ -152,7 +152,7 @@ namespace MyCompanyName.MyProjectName options.Languages.Add(new LanguageInfo("tr", "tr", "Türkçe")); options.Languages.Add(new LanguageInfo("zh-Hans", "zh-Hans", "简体中文")); options.Languages.Add(new LanguageInfo("zh-Hant", "zh-Hant", "繁體中文")); - options.Languages.Add(new LanguageInfo("de-DE", "de-DE", "Deutsche", "de")); + options.Languages.Add(new LanguageInfo("de-DE", "de-DE", "Deutsch", "de")); options.Languages.Add(new LanguageInfo("es", "es", "Español", "es")); }); } diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/MyProjectNameIdentityServerModule.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/MyProjectNameIdentityServerModule.cs index 1899fbb432..a5013823ac 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/MyProjectNameIdentityServerModule.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/MyProjectNameIdentityServerModule.cs @@ -70,7 +70,7 @@ namespace MyCompanyName.MyProjectName options.Languages.Add(new LanguageInfo("tr", "tr", "Türkçe")); options.Languages.Add(new LanguageInfo("zh-Hans", "zh-Hans", "简体中文")); options.Languages.Add(new LanguageInfo("zh-Hant", "zh-Hant", "繁體中文")); - options.Languages.Add(new LanguageInfo("de-DE", "de-DE", "Deutsche", "de")); + options.Languages.Add(new LanguageInfo("de-DE", "de-DE", "Deutsch", "de")); options.Languages.Add(new LanguageInfo("es", "es", "Español", "es")); }); diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyProjectNameWebModule.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyProjectNameWebModule.cs index 12b7ebf1a4..5815dea9d7 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyProjectNameWebModule.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyProjectNameWebModule.cs @@ -168,7 +168,7 @@ namespace MyCompanyName.MyProjectName.Web options.Languages.Add(new LanguageInfo("tr", "tr", "Türkçe")); options.Languages.Add(new LanguageInfo("zh-Hans", "zh-Hans", "简体中文")); options.Languages.Add(new LanguageInfo("zh-Hant", "zh-Hant", "繁體中文")); - options.Languages.Add(new LanguageInfo("de-DE", "de-DE", "Deutsche", "de")); + options.Languages.Add(new LanguageInfo("de-DE", "de-DE", "Deutsch", "de")); options.Languages.Add(new LanguageInfo("es", "es", "Español")); }); }