ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2022-07-05 22:05:11  阅读:184  来源: 互联网

标签:02 逻辑 架构 领域 通常 驱动 六边形 应用层


引言

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

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

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

架构

一个典型的DDD架构设计

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

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

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

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

CQRS架构

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

事件驱动架构

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

一个反案

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

标签:02,逻辑,架构,领域,通常,驱动,六边形,应用层
来源: https://www.cnblogs.com/xy1997/p/16444038.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有