首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DDD:应用程序服务应该放在后端还是UI中?

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

Stack Overflow用户
提问于 2020-12-05 12:48:03
回答 1查看 435关注 0票数 1

一些DDD书籍声明,比如[1],虽然我们有一个域模型,但是我们可以有几个应用程序服务层(有些使用术语服务层)。这是因为应用层是应用程序到域模型的特定UI和基础结构层之间的接口,因此,如果有多个用户接口处理后端,则可能存在多个应用程序服务层。这一点向我提出了在哪里定位应用层的问题。

我正在用.NET C#创建一个应用程序。整个应用程序都在一个解决方案中,其中UI(我们有三个使用后端的不同winforms应用程序)是单独的项目,后端项目(包含域层和基础结构层的类库)是一个单独的项目:

代码语言:javascript
复制
-- 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]状态:

表示层和应用层是系统前端的一部分;

他们在其中一个示例中添加了Application.UI项目中的应用层。其他书籍,如[2],有一个独特的应用层在后端,而不是在前端。

在UI中插入应用程序服务层会让我很恼火。原因是应用程序服务层包含应用程序的所有业务用例。它是域模型和基础结构层的客户端。这意味着,通过在UI中放置应用程序层,每个UI将有自己的应用层。但是,UI-1中使用的一些用例也很有可能在UI-2中使用。因此,您将有代码重复。

哪一个是正确的?

EN

回答 1

Stack Overflow用户

发布于 2020-12-09 11:45:13

我确实认为应用层只是域的入口点。应用程序服务和/或事件处理程序可能存在于该层中。可视化层考虑到洋葱体系结构,应用层封装了域层。

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

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

这是我对此的看法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65157091

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档