Update Domain-Services.md

pull/12031/head
liangshiwei 4 years ago committed by GitHub
parent 7fdfe9f653
commit efd92737b2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -2,18 +2,18 @@
## 介绍
在 [领域驱动设计](Domain-Driven-Design.md) (DDD) 解决方案中核心业务逻辑通常在聚合 ([实体](Entities.md)) 和领域服务中实现. 在以下情况下特别需要创建域服务
在 [领域驱动设计](Domain-Driven-Design.md) (DDD) 解决方案中,核心业务逻辑通常在聚合 ([实体](Entities.md)) 和领域服务中实现. 在以下情况下特别需要创建域服务
* 实现了依赖于某些服务(如存储库或其他外部服务)的核心域逻辑.
* 您需要实现的逻辑与多个聚合/实体相关,因此它不适合任何聚合.
* 实现了依赖于某些服务(如存储库或其他外部服务)的核心域逻辑.
* 你需要实现的逻辑与多个聚合/实体相关,因此它不适合任何聚合.
## ABP 领域服务基础设施
域服务是简单的无状态类.虽然您不必从任何服务或接口派生,但 ABP 框架提供了一些有用的基类和约定.
领域服务是简单的无状态类. 虽然你不必从任何服务或接口派生,但 ABP 框架提供了一些有用的基类和约定.
### DomainService 和 IDomainService
基类派生域服务 `DomainService` 或直接实现 `IDomainService` 接口.
`DomainService` 基类派生领域服务或直接实现 `IDomainService` 接口.
**示例: 创建从 `DomainService` 基类派生的领域服务.**
@ -30,8 +30,8 @@ namespace MyProject.Issues
当你这样做时:
* ABP 框架自动将类注册到具有瞬态生命周期的依赖注入系统.
* 您可以直接使用一些常用服务作为基础属性,而无需手动注入 (例如 [ILogger](Logging.md) and [IGuidGenerator](Guid-Generation.md)).
* ABP 框架自动将类注册为瞬态生命周期到依赖注入系统.
* 你可以直接使用一些常用服务作为基础属性,而无需手动注入 (例如 [ILogger](Logging.md) and [IGuidGenerator](Guid-Generation.md)).
> 建议使用 `Manager``Service` 后缀命名领域服务. 我们通常使用如上面示例中的 `Manager` 后缀.
**示例: 实现将问题分配给用户的领域逻辑**
@ -75,7 +75,7 @@ public class Issue : AggregateRoot<Guid>
### 使用领域服务
域服务通常用于 [应用程序服务](Application-Services.md).
域服务通常用于 [应用程序服务](Application-Services.md).
**示例: 使用 `IssueManager` 将问题分配给用户**
@ -112,16 +112,16 @@ namespace MyProject.Issues
}
````
由于 `IssueAppService` 在应用层, 它不能直接将问题分配给用户。因此,它使用 `IssueManager`.
由于 `IssueAppService` 在应用层, 它不能直接将问题分配给用户.因此,它使用 `IssueManager`.
## 应用程序服务与领域服务
虽然应用服务和领域服务都实现了业务规则但存在根本的逻辑和形式差异;
虽然 [应用服务](Application-Services.md) 和领域服务都实现了业务规则但存在根本的逻辑和形式差异:
虽然应用服务和领域服务都实现了业务规则,但存在根本的逻辑和形式差异;
虽然 [应用服务](Application-Services.md) 和领域服务都实现了业务规则,但存在根本的逻辑和形式差异:
* 应用程序服务实现应用程序的 **用例** (典型 Web 应用程序中的用户交互), 而域服务实现 **核心的、用例独立的域逻辑**.
* 应用程序服务获取/返回 [数据传输对象](Data-Transfer-Objects.md), 域服务方法通常获取和返回 **域对象** ([实体](Entities.md), [值对象](Value-Objects.md)).
* 领域服务通常由应用程序服务或其他领域服务使用而应用程序服务由表示层或客户端应用程序使用.
* 应用程序服务实现应用程序的 **用例** (典型 Web 应用程序中的用户交互), 而域服务实现 **核心的、用例独立的域逻辑**.
* 应用程序服务获取/返回 [数据传输对象](Data-Transfer-Objects.md), 域服务方法通常获取和返回 **域对象** ([实体](Entities.md), [值对象](Value-Objects.md)).
* 领域服务通常由应用程序服务或其他领域服务使用,而应用程序服务由表示层或客户端应用程序使用.
## 生命周期

Loading…
Cancel
Save