当前位置: 首页 > 知识库问答 >
问题:

DDD:应用程序服务应该放在后端还是UI中

施冠玉
2023-03-14

一些DDD书籍如[1]指出,尽管我们有一个域模型,但我们可以有几个应用程序服务层(有些使用术语服务层)。这是由于应用程序层是应用程序的特定UI到域模型和基础结构层之间的接口,因此,如果我们有多个用户界面与后端一起工作,可能会有多个应用程序服务层。这一点向我提出了一个问题,即在哪里定位应用程序层。
我正在用。NET C#创建一个应用程序。整个应用程序位于一个解决方案中,其中UI(我们有三个不同的winforms应用程序将使用后端)是单独的项目,后端项目(包含域层和基础结构层的类库)是单独的项目:

-- 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.applicationlayer1application.applicationlayer2application.applicationlayer3放在哪里?还是将所有应用程序层合并到一个应用程序服务层?

埃斯波西托等人。[1]声明:

共有1个答案

唐增
2023-03-14

我确实将应用程序层视为域的唯一入口点。应用程序服务和/或事件处理程序可能位于该层中。在考虑洋葱体系结构的情况下,可视化各层,应用程序层包装了域层。

很高兴你挑战了它,但我认为你已经用自己的方式回答了它。应用程序层应该是后端的一部分。

不过,我不会将服务与UIs进行1对1的映射。我会根据特征或资源将它们分开。如果不会产生大量的开销,那么使用命令和视图驱动的应用程序服务进行额外的写/读分离也会很好。如果您的UI需要相同的数据,但转换或丰富,您可能希望在两者之间的一个额外的“转换”层解决它,或者在查询接口(如GraphQL)时通过更灵活的方式获得它们

 类似资料:
  • 服务帐户是否打算在应用程序的域中创建?还是在客户的G Suite域中,代表应用程序? 背景: 我的公司有一个产品(以下简称“应用程序”),它有几千个组织作为客户,每个组织都可能拥有自己的Google域。(以下简称“组织域”) 我们希望在应用程序和组织域之间建立同步,用于应用程序和组织域之间的通用数据,并希望使用 OAuth2 连接,由域管理员代表其用户授予应用程序的“域范围权限”,以进行脱机同步。

  • 我正在尝试使用ExpressJS和Coffeescript制作一个网络应用程序,它从亚马逊、LastFM和必应的网络应用程序接口中提取数据。 用户可以从特定乐队请求特定专辑的价格、即将到来的音乐会时间和乐队的位置等数据,等等...诸如此类的东西。 我的问题是:我应该使用和在客户端进行这些API调用,还是应该在服务器端进行?我已经完成了客户端请求;我如何从服务器端进行API调用 我只想知道最佳实践是

  • 在我的应用程序中,我有以下层: 表示层 Web服务层 应用程序服务层 域层 基础结构层

  • 应用程序服务是一项基于 HTTP 的服务,用于托管 Web 应用程序、REST API 和移动后端。 应用程序服务是一项基于 HTTP 的服务,用于托管 Web 应用程序、REST API 和移动后端。支持 ASP.NET、ASP.NET Core、Java、Ruby、Node.js、PHP 或 Python等主流编程语言,用户可以无需管理底层基础设置,即可简单、高效、安全和灵活地对应用进行部署、

  • 我来自一个角度分明的世界,在那里我可以将逻辑提取到服务/工厂,并在控制器中使用它们。 我试图了解如何在React应用程序中实现相同的功能。 假设我有一个验证用户密码输入的组件(它的强度)。它的逻辑相当复杂,因此我不想将其写在组件中。 我应该在哪里写这个逻辑?在商店里,如果我使用flux?还是有更好的选择?