DDD领域驱动设计四、分层架构和代码模型

本文详细介绍了DDD的分层架构,包括用户接口层、应用层、领域层和基础层,强调了各层的主要职责和调用流程。在代码模型部分,讨论了一级目录结构,用户接口层的两种风格,应用层的事件和服务,以及领域层的聚合设计。此外,还补充了VO、DTO、DO、PO的概念。
摘要由CSDN通过智能技术生成

一、DDD的分层架构

DDD 分层架构包含用户接口层、应用层、领域层和基础层。通过这些层次划分,我们可以明确微服务各层的职能,划定各领域对象的边界,确定各领域对象的协作方式。。
DDD的分层架构如图:从上到下依次是:用户接口层、应用层、领域层和基础层。在这里插入图片描述

1、服务的调用

我们看一下下面这张图。微服务的服务调用包括三类主要场景:微服务内跨层服务调用,微服务之间服务调用和领域事件驱动。
在这里插入图片描述

下面开始介绍 DDD 各层的主要职责和调用流程。

2、用户接口层

用户接口层负责向用户显示信息和解释用户指令,并将数据传递给 Application 层。数据的组装、数据传输格式以及 Facade 接口等代码都会放在这一层目录里。这里的用户可能是:用户、程序、自动化测试和批处理脚本等等。

3、应用层

实现服务组合和编排,适应业务流程快速变化的需求,这一层聚集了应该服务和事件相关的功能。

应用层是很薄的一层,理论上不应该有业务规则或逻辑,主要面向用例和流程相关的操作。但应用层又位于领域层之上,因为领域层包含多个聚合,所以它可以协调多个聚合的服务和领域对象完成服务编排和组合,协作完成业务操作。

此外,应用层也是微服务之间交互的通道,它可以调用其它微服务的应用服务,完成微服务之间的服务组合和编排。

特别注意:这里我要提醒你一下:在设计和开发时,不要将本该放在领域层的业务逻辑放到应用层中实现。因为庞大的应用层会使领域模型失焦,时间一长你的微服务就会演化为传统的三层架构,业务逻辑会变得混乱。

4、领域层

实现领域的核心业务逻辑。这一层聚集了领域模型的聚合、聚合根、实体、值对象、领域服务和事件等领域对象,以及它们组合所形成的业务能力。

领域模型的业务逻辑主要是由实体和领域服务来实现的,其中,实体采用充血模式,其自身的所有逻辑都写在本类中;当需要组合多个实体或值对象时,领域服务就会出马,实现复杂的业务逻辑。

5、基础层

基础层是贯穿所有层的,它的作用就是为其它各层提供通用的技术和基础服务,包括第三方工具、驱动、消息中间件、网关、文件、缓存以及数据库等。比较常见的功能还是提供数据库持久化。

基础层包含基础服务,它采用依赖倒置设计,封装基础资源服务,实现应用层、领域层与基础层的解耦,降低外部资源变化对应用的影响。

比如说,在传统架构设计中,由于上层应用对数据库的强耦合,很多公司在架构演进中最担忧的可能就是换数据库了,因为一旦更换数据库,就可能需要重写大部分的代码,这对应用来说是致命的。那采用依赖倒置的设计以后,应用层就可以通过解耦来保持独立的核心业务逻辑。当数据库变更时,我们只需要更换数据库基础服务就可以了,这样就将资源变更对应用的影响降到了最低。

6、分层的原则

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值