问题描述
我正在学习和制定一个应用洋葱架构和领域驱动设计的示例项目。
根据我的理解,我起草了一个小型演示文稿并作为图片附在这篇文章中。
我需要对洋葱架构层及其实现进行说明。你能根据我的介绍解释一下吗?
核心项目:
域层 - 实体、值对象、聚合根、域异常对象。
领域服务层 - 业务逻辑契约。
基础设施服务层 - 持久性合同、存储库合同、电子邮件和短信合同、域事件和集成事件合同。
应用服务层 - 为用例编排基础设施和领域服务接口。
身份项目:
Web Api 层 - 控制器、配置、组合根等
基础设施层 - 持久性实现、存储库实现、电子邮件和短信实现、消息队列等
核心项目的领域服务层合约应该在哪里实现?
解决方法
洋葱架构被分为这些层:
- 核心包含业务规则(在 DDD 中,域模型)。
- 围绕核心是应用层。
- 围绕应用层有端口(IHM、REST...)和适配器层(持久性、消息...)。
在您的示例中,您有两个项目,每个项目都是一个包含所有层的洋葱。
此外,不要忘记使用业务专家的观点来设计/剪切您的子域。技术上的考虑并不是解决这个问题的好方法。
,嗯,据我了解 Onion 架构,有一个域层,就 DDD 而言,它包括聚合、实体、值对象、存储库(接口)和域服务。
然后是应用服务层,负责协调领域内容。
然后是基础设施层,最后是 Web Api 层。
这里的规则是一个层不能从上面的层中使用任何东西。