DDD分层架构最佳实践

本文介绍了DDD分层架构,对比了传统三层架构与DDD架构的区别,并详细阐述了DDD架构的四个层次:领域层、应用层、用户接口层和基础设施层。通过领域驱动设计,实现了微服务架构中的低耦合和高内聚,提供了最佳实践的指导。
摘要由CSDN通过智能技术生成

     还在单体应用的时候就是分层架构一说,我们用得最多的就是三层架构。而现在已经是微服务时代,在微服务架构模型比较常用的有几个,例如:整洁架构,CQRS(命令查询分离)以及六边形架构。每种架构模型都有自己的应用场景,但其核心都是“高内聚低耦合”原则。而运用领域驱动设计(DDD)理念以应对日常加速的业务变化对架构的影响,架构的边界越来越清晰,各司其职,这也符合微服务架构的设计思想。以领域驱动设计(DDD)为理念的分层架构已经成为微服务架构实践的最佳实践方法。

 

一、什么是DDD分层架构

1. 传统三层架构

要了解DDD分层架构,首先先了解传统的三层架构。

传统三层架构流程:

1:考虑的是数据库设计,数据表如何建,表之间的关系如何设计

2:就是搭建数据访问层,如选一个ORM框架或者拼接SQL操作

3:就是业务逻辑的实现,由于我们先设计了数据库,我们整个思考都会为让这数据库,想着怎么写才能吧数据正确的写入数据库中,这是CRUD的标准做法就出现了,也就没有太多考虑面向对象,解耦的事情了,这样的代码对日让的维护自然年是越来越困难,

4:表示层主要面向用户的输出

2. DDD分层架构

为了解决高耦合问题并轻松应对以后的系统变化,我们提出了运用领域驱动设计的理念来设计架构。

1)领域层

抛开数据库的困扰,先从业务逻辑入手开始,设计时不再考虑数据库的实现,将以前的业务逻辑层(BLL)拆分成了领域层合应用层。

领域层聚焦业务对象的业务逻辑实现,体现现实世界业务的逻辑变化,它用来变大业务概念,业务状态和业务规则。

2)应用层

应用层是领域层的上层,依赖领域层,是各聚合的协调和编排,原则上是不包括任何业务逻辑,他以较粗粒度的封闭为前端接口提供支持,除了提供上层调用外,还可以包括时间和消息的订阅,。

3) 用户接口层

用户接口层面向用户访问的数据入向接口,可按不同场景提供不一样的用户接口实现,面向Web的可使用 http restful的方式提供服务,可增加安全认证,权限校验,日志记录等功能,面向微服务的可使用RPC方式提供服务,可增加限流熔断等功能,

4) 基础设施层

基础设施层是数据的出向接口,封装数据调用的技术细节,可为其他任意层次提供服务,但为了解决额耦合的问题才用了依赖倒置原则,其他层只依赖基础设施的接口,与具体实现进行分离。

二、DDD分层代码实现

1. 结构模型

├── pom.xml
└── src
    ├── main
    │   ├── java
    │   │   └── fun
    │   │       └── barryhome
    │   │           └── ddd
    │   │               ├── WalletApplication.java
    │   │               ├── application
    │   │               │   ├── TradeEventProcessor.java
    │   │               │   ├── TradeMQReceiver.java
    │   │               │   └── TradeManager.java
    │   │               ├── constant
    │   │               │   └── MessageConstant.java
    │   │               ├── controller
    │   │               │   ├── TradeController.java
    │   │               │   ├── WalletController.java
    │   │               │   └── dto
    │   │    
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值