【发布时间】:2019-03-29 02:26:27
【问题描述】:
在我认为是 DDD 的三个原则之间,我感觉自己的 MPA ABP 应用程序开发陷入了困境:
- 应用程序服务不必绑定到控制器。我的意思是控制器不必总是只使用一个应用程序服务。因为应用服务的概念没有呈现在脑海中。
- DTO 必须满足视图需要,以最大限度地减少 HTTP 数据传输。所以有时我们必须为每个实体/概念和每个视图设计一个 DTO 类。
- 应用服务获取并始终返回 DTO。
现在我有一个遵循 Master-Detail 原则的视图:从实体列表中选择 Master 部分中的一个实体通过 Ajax 调用加载 Details 部分中的实体详细信息。但是Master部分的实体选择是由Ajax同步的下拉列表级联进行的:ParentEntities > Entities。
什么选择尊重更好的 DDD?
- 把GetAllParent()、GetAllEntities(parentId)和GetEntity(id)全部放在MyViewApplicationService中,那么我的应用服务就可以返回优化的DTO来满足我的视图需求,但是违反了DDD原则强>,
- 将这三种方法中的每一种都放在不同的应用程序服务中,在脑海中隔离更多“领域”,但 DTO 是面向领域的,有点通用。所以DTO 没有优化。
- 让控制器负责映射到适合视图需求的 DTO,但不应该这样做。
【问题讨论】:
标签: domain-driven-design aspnetboilerplate