首页 > 其他分享 >领域驱动设计DDD架构解析和绘图模板分享

领域驱动设计DDD架构解析和绘图模板分享

时间:2023-05-18 17:47:17浏览次数:37  
标签:架构 数据源 查询 绘图 CQRS 模板 DDD

  • DDD整洁架构

DDD整洁架构为了解决强调用的关系,出现了洋葱架构(六边形)架构,就是为了实现依赖倒置

它的思想就是把领域模型放到核心的位置,领域模型是独立的,不会直接强依赖其他层,而通过适配器来完成领域模型和外层的数据交换。

  • DDD分层架构和三层架构的区别与关系

DD分层架构和三层架构的区别与关系DDD代码分层架构与传统三层架构对比,可以发现传统三层架构被看成是一个贫血模式的领域驱动设计

  • DDD分层接口调用时序逻辑关系

DDD分层接口调用时序逻辑关系下面是基于DDD领域模型设计的系统中常用接口调用时序交互流程

  • CQRS架构

CQRS架构CQRS,中文名为命令和查询职责分离

CQRS 将系统中的操作分为两类,即「命令」(Command)  与「查询」(Query) 。命令则是对会引起数据发生变化操作的总称,即我们常说的新增,更新,删除这些操作,都是命令。而查询则和字面意思一样,即不会对数据产生变化的操作,只是按照某些条件查找数据。

CQRS 的核心思想是将这两类不同的操作进行分离,然后在两个独立的「服务」中实现。这里的「服务」一般是指两个独立部署的应用。在某些特殊情况下,也可以部署在同一个应用内的不同接口上。

Command 与 Query 对应的数据源也应该是互相独立的,即更新操作在一个数据源,而查询操作在另一个数据源上。当然查询和命令对应的数据源虽然不一样,但是肯定是需要同步的,那我们该怎么实现数据源的同步呢?

从图上可以看到,当 command 系统完成数据更新的操作后,会通过「领域事件」的方式通知 query 系统。query 系统在接受到事件之后更新自己的数据源。所有的查询操作都通过 query 系统暴露的接口完成。

从架构图上来看,CQRS 的实现似乎并不难,许多开发者觉得无非是「增删改」一套系统一个数据库,「查询」一个系统一个数据库而已,有点类似「读写分离」,并没有什么特别的地方。但是真正要使用 CQRS 是有许多问题与细节要解决的。

备注:以上架构图都使用PDDON在线画图工具免费制作,有需要要的朋友可以到官网上找到类似的架构图模板哦,免费克隆模板,根据自家业务克隆模板进行调整就可以使用了,工具和模板地址:https://pddon.com

标签:架构,数据源,查询,绘图,CQRS,模板,DDD
From: https://www.cnblogs.com/pddon/p/17412617.html

相关文章

  • 6-1 数组排序输出(函数模板)
    6-1数组排序输出(函数模板)分数 10全屏浏览题目切换布局作者 何振峰单位 福州大学对于输入的每一批数,按从小到大排序后输出。一行输入为一批数,第一个输入为数据类型(1表示整数,2表示字符型数,3表示有一位小数的浮点数,4表示字符串,0表示输入结束......
  • 功能测试用例模板
    功能测试就是对产品的各功能进行验证,根据功能测试用例,逐项测试,检查产品是否达到用户要求的功能。在功能测试中,注意的检测重点包括:界面操作是否符合用户习惯:测试人员要确保软件界面的操作符合用户的使用习惯,如按钮的位置、字体大小、颜色等是否合适,操作是否简单、方便、快捷。......
  • 蒲公英(Loj 分块模板9)
    [Violet]蒲公英题目背景亲爱的哥哥:你在那个城市里面过得好吗?我在家里面最近很开心呢。昨天晚上奶奶给我讲了那个叫「绝望」的大坏蛋的故事的说!它把人们的房子和田地搞坏,还有好多小朋友也被它杀掉了。我觉得把那么可怕的怪物召唤出来的那个坏蛋也很坏呢。不过奶奶说他是很难受......
  • Loj分块模板1
    #include<iostream>#include<cstdio>#include<cmath>#include<cstring>#include<algorithm>usingnamespacestd;intn,m,len;intpos[5211314],add[5211314],num[5211314];inlinevoidAdd(intLiftPos,intRightPos,intval......
  • Midjourney|文心一格prompt教程[Text Prompt(下篇)]:游戏、实物、人物、风景、动漫、邮票
    Midjourney|文心一格prompt教程[TextPrompt(下篇)]:游戏、实物、人物、风景、动漫、邮票、海报等生成,终极模板教学场景6:游戏Prompt真的越长越好吗?按照Midjourney的官方文档里的说法,并不一定:Promptscanbeverysimple.Singlewords(orevenanemoji!)willproducean......
  • 模板模式(Template Pattern)
    模板模式一、介绍  模板模式(TemplatePattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于行为型模式。意图:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方式使......
  • 使用 HTML5 canvas 进行 Web 绘图
    新的HTML5规范旨在帮助开发人员更轻松的编写出各类Web应用,以顺应当前SaaS,云计算以及RIA等技术的最新趋势。在HTML5得以广泛推广之前,开发人员通常使用SVG,VML等技术进行Web绘图操作,但这些基于XML的绘图语言声明式的绘图方式并不能满足复杂绘图操作在性能上的需求,比如......
  • SIEMENS/西门子西门子1200plc轴运动控制程序模板 介绍:此
    SIEMENS/西门子西门子1200plc轴运动控制程序模板介绍:此程序是之前给海康威视做的一台装路由器壳子的机器。程序有以下:1):调用轴控制块做的控制3个伺服,2):1个电缸,3):用PUTGET块与上下游plc通讯,4):轴控制块5):气缸报警块6):完整的电路图7):威纶通触摸屏程序8):IO表程序块已经在很多个项......
  • opencv模板匹配
    opencv模板匹配  读取图像并转换为灰度图像。 importcv2#读取图像img=cv2.imread('template.jpg')#转换为灰度图像gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) 检测关键点并绘制矩形框。 #使用SIFT算法检测关键点......
  • 【BZOJ4241】【回滚莫队模板题】历史研究
    Description给定一个序列,每次询问区间[l,r][l,r]内,所有权值与其出现次数的乘积的最大值。Solution回滚莫队模板题。将询问以左端点所在块为第一关键字,右端点为第......