[领域驱动设计]-02-项目与架构

2022/7/5 23:23:38

本文主要是介绍[领域驱动设计]-02-项目与架构,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

引言

领域驱动设计的最终目的是能够构建出良好的、可维护的软件架构。那么,一个设计优良的软件架构应该具有如下特点:

  1. 与外部依赖独立
  2. 与底层数据源独立
  3. 与前端展示逻辑独立
  4. 易于测试与更新

要满足以上特性,实际上需要软件的各个部分之间不依赖于具体的实现,只依赖于抽象的接口。

架构

一个典型的DDD架构设计

典型的DDD架构中,包含用户展示层、应用层、领域层与基础设施层。通常来说,只有相邻的层之间才会发生耦合,不相邻的层之间极少发生耦合(观察者模式)

  • 应用层中主要执行应用服务逻辑,是相对简单的,对聚合的操作逻辑。若出现过于复杂的代码,则说明领域逻辑已经渗透到了应用层。
  • 通常会使用依赖倒置与依赖注入的方式来改进这一经典架构。领域模型提供接口,基础设施层完成对应的实现。

六边形架构(端口与适配器)

在六边形架构中,不强调传统web中的前端与后端。而是以系统为单位,划分为内部与外部。外部(客户)调用系统的内部功能时,通过适配器进行适配。

CQRS架构

image
在这个架构中,对查询和命令进行了不同的处理链路,并使用了隔离的持久化区。通常来说查询命令是一个只读操作,只涉及简单的sql调用(如果使用RDB)。而在命令处理器中,则会对所需的数据进行收集,并对相应的聚合进行状态的更新,同时发布一个领域事件。此时事件订阅器就会根据事件更新查询模型这边的数据,保证了数据的最终一致性。(如果需要较强的一致性,可以通过加入更新时间的字段来保证)

事件驱动架构

通常会和六边形架构一起使用,用于各个六边形系统之间的通信。本质上是一个事件发布与发现、处理的过程,

一个反案

在一个项目中,通常会涉及到与底层数据库的交互



这篇关于[领域驱动设计]-02-项目与架构的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程