赞
踩
目录
传统三层架构包含Controller层、Service层、Dao层,增删改查的流程大概如下:
但其实可以发现,Service层就是充当了中间人,Controller明明可以直接调用Dao,但真实业务场景往往更复杂,前后端交互是用Json(对象)交互,因为有时候前后端需要交互的数据并不是对象所有的字段,只是其中某些字段,那我们传输时只需要传这几个字段就行了,所以需要诞生PO、VO、DTO,这就不再是纯粹的三层架构了。
DDD分层架构、六边形架构、整洁架构都实现了前后端分离,内部负责业务逻辑、外部负责交互用户和基础资源,不同的是DDD分离出来了应用层,来充当API角色,解决了传统三层架构中Service层混乱无序的问题,以下是一个经典DDD架构模型代码目录:
interfaces存放与前端交互,展示数据的代码。主要处理用户的Restful请求,解析配置文件,传递数据往应用层。
application存放与微服务组合和编排相关代码。
domain存放核心业务逻辑代码。包含多个聚合代码包,聚合包内包括实体、方法、领域服务和事件等代码。
infrastructure存放基础资源代码。为其它各层提供的通用技术能力、三方软件包、数据库服务、配置、网关等基础资源服务。
DDD分层架构不允许服务跨层调用,服务逐层封装
- 基础层的主要对象是 PO 对象。我们需要先建立 DO 和 PO 的映射关系:大多数情况下 PO 和 DO 是一一对应的。但也有 DO 和 PO 多对多的情况,在 DO 和 PO 数据转换时,需要进行数据重组。
- 领域层的主要对象是 DO 对象。DO 是实体和值对象的数据和业务行为载体,承载着基础的核心业务逻辑。通过 DO 和 PO 转换,我们可以完成数据持久化和初始化。
- 应用层的主要对象是 DO 对象。如果需要调用其它微服务的应用服务,DO 会转换为 DTO,完成跨微服务的数据组装和传输。用户接口层先完成 DTO 到 DO 的转换,然后应用服务接收 DO 进行业务处理。如果 DTO 与 DO 是一对多的关系,这时就需要进行 DO 数据重组。
- 用户接口层会完成 DO 和 DTO 的互转,完成微服务与前端应用数据交互及转换。Facade 服务会对多个 DO 对象进行组装,转换为 DTO 对象,向前端应用完成数据转换和传输。
- 前端应用主要是 VO 对象。展现层使用 VO 进行界面展示,通过用户接口层与应用层采用 DTO 对象进行数据交互。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。