【发布时间】:2021-03-17 07:19:32
【问题描述】:
一些 DDD 书籍状态,如 [1] 状态,虽然我们有一个领域模型,但我们可以有多个应用程序服务层(有些使用术语服务层)。这是因为应用程序层是应用程序的特定 UI 与域模型和基础设施层之间的接口,因此如果我们有多个与后端一起工作的用户界面,则可能存在多个应用程序服务层。这一点向我提出了应用层在哪里定位的问题。
我正在使用 .NET C# 创建一个应用程序。整个应用程序在一个解决方案中,其中 UI(我们有三个将使用后端的不同 winform 应用程序)是单独的项目,而后端项目(包含域层和基础设施层的类库)是一个单独的项目:
-- My Solution
|
+-- Application.UI Number 1
+-- Application.UI Number 2
+-- Application.UI Number 3
+-- Application.Backend
|
+-- Domain Layer (Model and Domain Services)
+-- Infrastructure Layer (Repositories with ORM-Tool)
在示例中,我目前看到的应用程序服务层是放在Application.Backend 中的。但是,基于我们可以为每个 UI 拥有不同的应用程序服务层这一事实,这是正确的吗?您将项目Application.ApplicationLayer1、Application.ApplicationLayer2 和Application.ApplicationLayer3 放在哪里?还是将所有应用层合并为一个应用服务层?
埃斯波西托等人。 [1]状态:
表示层和应用层是前端的一部分 系统;
他们在其中一个示例中的Application.UI 项目中添加了应用程序层。
其他书籍如[2] 在后端而不是前端有一个独特的应用层。
在 UI 中插入应用程序服务层让我很恼火。原因是应用服务层包含了应用的所有业务用例。它是领域模型和基础设施层的客户端。这意味着通过将应用程序层放在 UI 中,每个 UI 都会有自己的应用程序层。但是 UI-1 中使用的一些用例很有可能也在 UI-2 中使用。因此,您将有代码重复。
哪个是正确的?
【问题讨论】:
标签: c# domain-driven-design service-layer