DDD、AutoMapper 和工厂
DDD, AutoMapper and Factories
我一直在研究 DDD 并且看到了很多代码能够在我现在的工作中构建一个新的api。
让我们假设以下分层架构:
- Api
- 应用程序服务(ViewModel 在这里)
- Domain(领域服务和领域模型在这里)
- 基础设施
Application Service 使用 Automapper 创建一个 Domain Model Object,并传递给它到 域服务层 。对吗?
如果我已经有一个域模型对象可以在那里使用,我为什么要使用工厂?我完全忽略工厂是错误的吗?
由于我使用 Automapper 将 view model objects 映射到 domain model objects ,其中factory 出现了吗?
我有一种感觉,我在这里错过了一些重要的东西。
The Application Service uses Automapper to create a Domain Model Object, and passes it to Domain Service Layer. Is that correct?
没有。这就是您编写 CRUD 系统的方式。领域实体应该保护它自己的状态,所有对领域实体的修改都应该通过方法.
进行
类似于:
var user = repos.Get(userId);
user.ActivateAccount();
repos.Update(user);
因此,应用程序服务应该围绕操作建模,而不是仅仅传递看起来与域实体完全一样的 DTO。
using your example, how would I pass a new user? Should I use AutoMapper to map to a DTO User, and in my Domain Layer call a factory
我将创建一个用户 DTO,它包含域实体用户中信息的一个子集,只是成功创建用户所需的信息。
在应用程序服务中,您可以使用工厂创建实体,然后用来自 DTO 的信息填充它。我个人会创建一个没有工厂的实体,但会在用户构造函数中提供强制性信息。
我一直在研究 DDD 并且看到了很多代码能够在我现在的工作中构建一个新的api。
让我们假设以下分层架构:
- Api
- 应用程序服务(ViewModel 在这里)
- Domain(领域服务和领域模型在这里)
- 基础设施
Application Service 使用 Automapper 创建一个 Domain Model Object,并传递给它到 域服务层 。对吗?
如果我已经有一个域模型对象可以在那里使用,我为什么要使用工厂?我完全忽略工厂是错误的吗?
由于我使用 Automapper 将 view model objects 映射到 domain model objects ,其中factory 出现了吗? 我有一种感觉,我在这里错过了一些重要的东西。
The Application Service uses Automapper to create a Domain Model Object, and passes it to Domain Service Layer. Is that correct?
没有。这就是您编写 CRUD 系统的方式。领域实体应该保护它自己的状态,所有对领域实体的修改都应该通过方法.
进行类似于:
var user = repos.Get(userId);
user.ActivateAccount();
repos.Update(user);
因此,应用程序服务应该围绕操作建模,而不是仅仅传递看起来与域实体完全一样的 DTO。
using your example, how would I pass a new user? Should I use AutoMapper to map to a DTO User, and in my Domain Layer call a factory
我将创建一个用户 DTO,它包含域实体用户中信息的一个子集,只是成功创建用户所需的信息。
在应用程序服务中,您可以使用工厂创建实体,然后用来自 DTO 的信息填充它。我个人会创建一个没有工厂的实体,但会在用户构造函数中提供强制性信息。