Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >可落地的DDD(6)-工程结构

可落地的DDD(6)-工程结构

作者头像
方丈的寺院
发布于 2022-11-08 05:21:28
发布于 2022-11-08 05:21:28
4760
举报
文章被收录于专栏:方丈的寺院方丈的寺院

背景

几年前我在可落地的DDD的(2)-为什么说MVC工程架构已经过时总结了基于DDD的微服务工程结构是怎么样的。那篇文章重点阐述了与MVC架构的区别。导致一些细节没有讲清楚,本文结合最近两年的实践,再详细阐述下。

应用拆解

请添加图片描述

为了实现一个端到端的用户请求,后端服务按照调用链一般可以分成四层

  1. 用户接口 应用作为provider,封装领域服务,提供给外部调用。处理用户命令与展示。这一层的价值在于防止领域模型的泄露。包括提供给本地其他领域调用、rpc调用、前端的http调用。
  2. 应用服务 很薄的一层,主要是面向usecase的。可以协调多个领域服务完成用户接口。
  3. 领域服务 领域服务层,即我们通常说的领域模型。领域内的属性、行为、事件、规则通过领域服务、领域事件、实体、值对象这些有序的组织起来。
  4. 基础设施 应用依赖的外部资源,包括存储、外部接口、消息等。

架构模式

应用被拆成四层,每一层有自己的作用。现在我们需要做的就是有效的组织这四层,以领域模型为中心,合理分层,高内聚、低耦合,隔离并解耦内部核心业务逻辑与外部应用和资源。业界比较常见的有以下几种。

分层架构

左边是传统的四层架构,即还是以调用顺序组织的。右边是依赖倒置的。

所谓依赖倒置即虽然按照运行时的调用关系是A依赖B,但是我在编译环节是让B依赖A。即A提供接口,B来实现。主要是两点

  1. 领域层不再依赖其他任何一层,这样能够实现具体的技术实现不会影响业务,不用纠结到底如何持久化,如何发消息。定义接口,让基础设施层实现。这样可以让领域模型易测试,易维护。
  2. 基础层依赖其他各层,包括领域层、接口层、应用服务层。

关于基础设施层是否依赖接口层,这点个人持怀疑态度。从实践来看。基础设施层的迭代频率要低于接口层,抽象程度高于用户接口层。从依赖角度来说,让用户接口层依赖基础设施层更合适。

下图是我们常用的分层架构。

六边形架构

请添加图片描述

网络用图,如有侵权,联系删除

六边形架构通过内外两个六边形将领域层和其他部分分割成两部分。对于其他部分,提出了2个概念。

  1. 端口(port) 即应用的入口和出口,是应用同外部交流的唯一通道。一般是以接口的形式存在。端口是在领域服务层。
  2. 适配器(adaptor) 与port相关联。对于入口层(用户接口层)是依赖调用。对于出口层(基础设施层)是接口实现的关系。适配器是在非领域层。

举个例子,用户取消支付,系统需要发布消息。领域层提供入口端口CancelPayService,出口端口sendCancelPayMsg 用户接口层在controller中调用CancelPayService. 基础设施层实现sendCancelPayMsg接口,发送一条消息到kafka。

整洁架构

请添加图片描述

网络用图,如有侵权,联系删除

整洁架构是在分层架构基础上,更清晰的定义了各层的依赖关系。按照从内到外,定义了各层的重要等级。越往里,代码越核心,依赖就应该越少。外圆依赖内圆,内圆无需感知外圆。

基础设施 -> 用户接口 -> 应用服务 -> 领域服务

菱形对称架构

请添加图片描述

网络用图,如有侵权,联系删除

菱形架构是去掉了用户接口层和基础设施层这个概念,改成叫网关,同时通过南北网关来区分。

只是换了个说法,本质上没什么区别。

总结

分层、六边形、整洁、菱形架构本质上没什么区别,都是分层。通过不同的维度来把各层关系的依赖关系阐述的更清晰。核心点在于

  1. 其他层依赖领域层,领域层不依赖任何外部内容
  2. 领域层通过端口与外部交互。这两点非常重要,能够帮助开发者专注在领域模型的开发上,而不是纠结与其他层的交互上。

至于其他层是否有明确的依赖关系是次要点,可以忽略。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-06-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 方丈的寺院 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
60种常用可视化图表的使用场景——(上)
点阵图表 (Dot Matrix Chart) 以点为单位显示离散数据,每种颜色的点表示一个特定类别,并以矩阵形式组合在一起。
JOYCE_Leo16
2024/03/19
8290
60种常用可视化图表的使用场景——(上)
60种常用可视化图表的使用场景——(下)
这种图表使用同心圆网格来绘制条形图。每个圆圈表示一个数值刻度,而径向分隔线则用作区分不同类别或间隔(如果是直方图)。
JOYCE_Leo16
2024/03/19
6100
60种常用可视化图表的使用场景——(下)
只会Excel怎么够?这49款数据可视化神器推荐收藏
新媒体管家 大数据时代,你还在拿Excel做的图表提交给Boss看吗?有没有想过用其他更炫酷的工具让Boss眼前一亮呢?为了让大家了解如何选择适合的数据可视化产品,小编整理了50款可以用来做数据可视化
钱塘数据
2018/03/06
3.9K0
只会Excel怎么够?这49款数据可视化神器推荐收藏
【数据可视化】让效率“爆表”的49个数据可视化工具
工欲善其事,必先利其器。好的工具可以大大提升你的工作效率,并获得身边人的羡慕和赞赏。今天,我们就来向小伙伴们分享一大波非常实用的工具,武装你的大脑。 ▲图表类 iCharts 简介:各种主题的开放图
陆勤_数据人网
2018/02/26
3.1K0
【数据可视化】让效率“爆表”的49个数据可视化工具
10种免费的工具让你快速的、高效的使用数据可视化
是的,我们有数据,并有了数据的洞察,然后呢?显然,下一步将是与人们交流这些发现,以便他们采取必要的行动。最有效的数据交流方式之一就是讲故事。但是要成为有效的讲述者,我们需要简化事情,而不是使事情复杂化,这样使得分析的真正本质不会丢失。
AI研习社
2019/07/30
3.3K0
10种免费的工具让你快速的、高效的使用数据可视化
可视化分析工具大集合,让数据美如画
导读:大数据时代,得数据者得天下。巧妇难为无米炊,拥有数据却不知道如何利用,就不能体现数据的价值。而数据可视化作为处理数据的重要步骤,一直被广泛应用。冷冰冰的数据,经过可视化技术的加工,便酒曲入瓮般幻
钱塘数据
2018/03/06
2.5K0
可视化分析工具大集合,让数据美如画
【干货】数据可视化分析工具大集合
Excel Excel作为一个入门级工具,是快速分析数据的理想工具,也能创建供内部使用的数据图,但是Excel在颜色、线条和样式上课选择的范围有限,这也意味着用Excel很难制作出能符合专业出版物和网
钱塘数据
2018/03/05
2.6K0
【干货】数据可视化分析工具大集合
14个最好的 JavaScript 数据可视化库[每日前端夜话0x42]
你的程序有多么依赖数据?即使应用程序不完全面向业务,你也可能需要管理面板、仪表板、性能跟踪以及用户非常喜欢的类似分析功能的数据。
疯狂的技术宅
2019/04/23
6.4K0
14个最好的 JavaScript 数据可视化库[每日前端夜话0x42]
20个免费和开源数据可视化工具
数据可视化正在帮助全球公司识别模式,预测结果并提高业务回报。可视化是数据分析的一个重要方面。简而言之,数据可视化以可视格式传达表格或空间数据的结果。图像有能力吸引注意力并清晰地传达想法。这有助于决策制定并推动改进行动。
February
2018/11/19
14.7K0
收藏!52个实用的数据可视化工具!
从数据获得信息的最佳方式之一是,通过视觉化方式,快速抓住要点信息。另外,通过视觉化呈现数据,也揭示了令人惊奇的模式和观察结果,是不可能通过简单统计就能显而易见看到的模式和结论。
CDA数据分析师
2021/03/11
4.7K0
收藏!52个实用的数据可视化工具!
2018年全球最受欢迎的30款数据可视化工具
RAWGraphs是一个在线的开源工具和数据可视化框架,用来处理Excel表中的数据。你只需将数据导入到RAWGraphs中,设计你想要的图表,然后将其导出为SVG格式或PNG格式的图片。此外,上传至RAWGraphs的数据只会在web端在线进行处理,保证了数据的安全性。
iCDO互联网数据官
2019/10/08
4.5K0
2018年全球最受欢迎的30款数据可视化工具
【数据可视化】Echarts最常用图表
在上一篇博客中提到了【数据可视化】数据可视化入门前的了解,这次来看看Echarts最常用图表有哪些,和作用是什么?
zxctscl
2024/03/16
8170
【数据可视化】Echarts最常用图表
十款常用的数据展示(可视化)软件介绍,操作便捷,功能强大
大数据的出现使数据可视化可谓发挥到了极致。数据可视化主要是为了直观,实时地查看数据变化并做出第一反馈。正因为人们分析了大量数据,所以可视化的数据展示可以使用户很直接的了解并感受到大数据带来的震撼。
数据前沿
2020/06/19
4.4K0
十款常用的数据展示(可视化)软件介绍,操作便捷,功能强大
50种制作图表JS库
在很多项目中都会有在前端展现数据图表的需求,而在开发过程中,开发者往往会使用一些JavaScript库,从而更有效地达到想要的目标。最近,TechSlide上的一篇文章总结了50种用于展现图表的JavaScript库,并对每种库做了简要的说明。这对于想要选择合适JavaScript库的开发者很有参考意义。
阳光岛主
2019/02/19
4.7K0
62款前端数据可视化插件大盘点
在大数据时代,很多时候我们需要在网页中显示数据统计报表,从而能很直观地了解数据的走向,开发人员很多时候需要使用图表来表现一些数据。随着Web技术的发展,从传统只能依靠于flash、IE的vml,各个浏览器尚不统一的svg,到如今规范统一的canvas、svg为代表的html5技术,表现点、线、面要素的技术已经越来越规范成熟。我把前端数据可视化分为了五种: 1.图表 2.图谱 3.地图 4.关系图 5.立体图 我将按照顺序介绍62款前端可视化插件,下面就分享下其中34款图表插件: 1.amcharts url
钱塘数据
2018/03/06
25.3K4
62款前端数据可视化插件大盘点
推荐30款最佳的数据可视化工具
各个互联网公司通过大量的用户数据、信息进行统计分析,而这些大量繁杂的数据在经过可视化工具处理后,就能以图形化的形式展现在用户面前,清晰直观。随着各种数据的增加,这种可视化工具越来越得到开发者们的欢迎。   下面推荐30款可视化工具供大家选择和使用。 1.iCharts iCharts 提供了一个用于创建并呈现引人注目图表的托管解决方案。有许多不同种类的图表可供选择,每种类型都完全可定制,以适合网站的主题。iCharts 有交互元素,可以从Google Doc、Excel 表单和其他来源中获取
小莹莹
2018/04/18
10.7K0
推荐30款最佳的数据可视化工具
【收藏】55 款可视化分析工具,优秀数据分析师必备!
俗话说的好:工欲善其事,必先利其器!一款好的工具可以让你事半功倍,尤其是在大数据时代,更需要强有力的工具通过使数据有意义的方式实现数据可视化,还有数据的可交互性;我们还需要跨学科的团队,而不是单个数据
CDA数据分析师
2018/02/11
2.6K0
【收藏】55 款可视化分析工具,优秀数据分析师必备!
吐血整理:24种可视化图表优缺点对比,一图看懂!
安德鲁·阿伯拉(Andrew Abela)制作的《这份指南》(This Guide)是思考图表类型的一个很好的起点,但不要把它用作决策引擎。并不是人人都同意他对图表类型的组织方式,层级结构也并未包含所有有效的图表类型。
CDA数据分析师
2020/09/22
5.2K0
吐血整理:24种可视化图表优缺点对比,一图看懂!
九大数据可视化利器,你有在使用吗?
可视化信息以易于阅读的视觉化内容正在被越来越多的人所青睐。可视化形式呈现信息的需求也随之增加,因此近年来涌现出了许多数据可视化工具。对于不熟悉数据可视化领域的人来说,最好的方法是尝试一些现成的解决方案来快速制作标准化的图表。对于拥有更多技术专长、经验丰富的用户,最好的办法是使用更灵活的库。 下面与大家分享九大数据可视化库,希望你可以找到最适合的一款。
LiveEdu
2018/05/21
4.2K0
九大数据可视化利器,你有在使用吗?
55款大数据分析神器:你还在用Excel?
来源:DataCastle数据城堡(ID:DataCastle2016)、大数据分析和人工智能(ID:datakong)
CDA数据分析师
2019/11/12
1.3K0
55款大数据分析神器:你还在用Excel?
推荐阅读
相关推荐
60种常用可视化图表的使用场景——(上)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档