洋葱架构 - 有哪些层以及在何处放置服务?

问题描述

我正在学习和制定一个应用洋葱架构和领域驱动设计的示例项目。

根据我的理解,我起草了一个小型演示文稿并作为图片在这文章中。

我需要对洋葱架构层及其实现进行说明。你能根据我的介绍解释一下吗?

enter image description here

核心项目:

域层 - 实体、值对象、聚合根、域异常对象。

领域服务层 - 业务逻辑契约。

基础设施服务层 - 持久性合同、存储库合同、电子邮件和短信合同、域事件和集成事件合同。

应用服务层 - 为用例编排基础设施和领域服务接口。

身份项目:

Web Api 层 - 控制器、配置、组合根等

基础设施层 - 持久性实现、存储库实现、电子邮件和短信实现、消息队列等

核心项目的领域服务层合约应该在哪里实现?

解决方法

洋葱架构被分为这些层:

  • 核心包含业务规则(在 DDD 中,域模型)。
  • 围绕核心是应用层。
  • 围绕应用层有端口(IHM、REST...)和适配器层(持久性、消息...)。

在您的示例中,您有两个项目,每个项目都是一个包含所有层的洋葱。

此外,不要忘记使用业务专家的观点来设计/剪切您的子域。技术上的考虑并不是解决这个问题的好方法。

,

嗯,据我了解 Onion 架构,有一个域层,就 DDD 而言,它包括聚合、实体、值对象、存储库(接口)和域服务。

然后是应用服务层,负责协调领域内容。

然后是基础设施层,最后是 Web Api 层。

这里的规则是一个层不能从上面的层中使用任何东西。