[领域驱动设计]-02-项目与架构
作者:互联网
引言
领域驱动设计的最终目的是能够构建出良好的、可维护的软件架构。那么,一个设计优良的软件架构应该具有如下特点:
- 与外部依赖独立
- 与底层数据源独立
- 与前端展示逻辑独立
- 易于测试与更新
要满足以上特性,实际上需要软件的各个部分之间不依赖于具体的实现,只依赖于抽象的接口。
架构
一个典型的DDD架构设计
典型的DDD架构中,包含用户展示层、应用层、领域层与基础设施层。通常来说,只有相邻的层之间才会发生耦合,不相邻的层之间极少发生耦合(观察者模式)
- 应用层中主要执行应用服务逻辑,是相对简单的,对聚合的操作逻辑。若出现过于复杂的代码,则说明领域逻辑已经渗透到了应用层。
- 通常会使用依赖倒置与依赖注入的方式来改进这一经典架构。领域模型提供接口,基础设施层完成对应的实现。
六边形架构(端口与适配器)
在六边形架构中,不强调传统web中的前端与后端。而是以系统为单位,划分为内部与外部。外部(客户)调用系统的内部功能时,通过适配器进行适配。
CQRS架构
在这个架构中,对查询和命令进行了不同的处理链路,并使用了隔离的持久化区。通常来说查询命令是一个只读操作,只涉及简单的sql调用(如果使用RDB)。而在命令处理器中,则会对所需的数据进行收集,并对相应的聚合进行状态的更新,同时发布一个领域事件。此时事件订阅器就会根据事件更新查询模型这边的数据,保证了数据的最终一致性。(如果需要较强的一致性,可以通过加入更新时间的字段来保证)
事件驱动架构
通常会和六边形架构一起使用,用于各个六边形系统之间的通信。本质上是一个事件发布与发现、处理的过程,
一个反案
在一个项目中,通常会涉及到与底层数据库的交互
标签:02,逻辑,架构,领域,通常,驱动,六边形,应用层 来源: https://www.cnblogs.com/xy1997/p/16444038.html