论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
软件与程序人生
›
云原生
›
领域驱动DDD三种架构-分层架构、洋葱架构、六边形架构 ...
领域驱动DDD三种架构-分层架构、洋葱架构、六边形架构 ...
莫张周刘王
金牌会员
|
2025-1-19 05:33:00
|
显示全部楼层
|
阅读模式
楼主
主题
908
|
帖子
908
|
积分
2724
博主介绍:
各人好,我是Yuperman,互联网宇宙厂经验,17年医疗健康行业的码拉松奔驰者,曾担任技术专家、架构师、研发总监负责和主导多个应用架构。
技术范围:
现在专注java体系,以及golang、.Net、软件架构、DDD、微服务、redis、nginx、tomcat、mysql、oracle等
业务范围:
从数字医院到区域医疗,从院内业务体系到互联网医院及健康服务,从公立医院到私立医院都有一些履历及理解
***
为各人分享一些技术积累,欢迎交流合作 持续关注Yuperman
***
领域驱动DDD三种架构-分层架构、六边形架构、洋葱架构
本文介绍DDD的三种重要实现架构
1.分层架构
2.六边形架构
3.洋葱架构
据相识互联网许多大厂都在应用实践DDD,同时许多银行保险等行业也在积极深入应用,DDD也非常得当我地点的医疗行业,也在部门项目中进行了应用。在早期的项目中应用分层架构较多,随着理解深入和DDD演进,逐渐应用洋葱架构。
领域驱动DDD得当应用场景包罗:
(1)业务应用体系:当项目涉及多个业务领域,且业务逻辑复杂时,采用DDD能够进步体系的可维护性、可扩展性和机动性。
(2)团队协作:在大型项目中,DDD有助于明白各团队的职责范围,进步团队之间的沟通协作效率。
(3)业务变革频繁的项目:DDD能够资助体系快速相应业务变革,低落因业务变动导致的开发成本。
优势与不敷
优势:
(1)进步可维护性:通过将复杂的业务场景划分为简朴的领域,有利于代码的阅读和维护。
(2)进步可扩展性:领域之间的解耦低落了体系间的耦合度,有利于未来的功能扩展和新技术引入。
(3)进步机动性:基于领域模子的设计使得体系能够更快地相应业务变革,进步适应性。
(4)促进团队沟通:通过清楚地界说领域边界,有助于团队之间的交流和协作。
不敷:
(1)学习成本较高:把握DDD必要一定的领域知识和编程经验,对于初学者来说,学习成本较高。
(2)过度设计:在实际项目中,过度关注领域划分大概导致体系设计过于复杂,反而低落开发效率。
(3)领域建模挑战:对于某些复杂业务场景,领域建模大概存在一定的困难,必要开发者具备较高的业务理解和建模能力。
一、分层架构
2003年,Eric Evans出书了他的标志性著作《领域驱动设计:软件焦点复杂性应对之道》。今后,DDD的概念被人熟悉,以及基于DDD的一系列架构演变开始出现。
分层架构,每一层,只与自己下一层发生耦合,雷同于网络的7层或TCP/IP的4层模子架构,每一层各司其职,并且只关心向下一层的实现,而不会出现各层耦合。
DDD分层架构中包罗四层:从上到下分别是用户接口层,应用层,领域层和基础层。
二、六边形架构
2005年Alistair Cockburn提出了六边形架构,在这个架构中,将应用分为内六边形和外六边形两层,内六边形实现应用的焦点业务逻辑。外六边形完成外部应用,基础资源等的交互和访问,对于与差别的外部体系交互,由外六边形的适配器负责协议转换,包管内六边形业务逻辑的干净。
这种架构也是典型的分层架构,和DDD分层架构一样,都体现了高内聚,低耦合的设计特性。六边形也常作为指导微服务设计的紧张架构之一。
六边形架构又称端口-适配器架构,这个名字更容易理解。六边形架构将体系分为内部(内部六边形)和外部,内部代表应用的业务逻辑,外部代表应用的驱动逻辑、基础设施或其他应用。内部通过端口和外部体系通信,端口代表了一定协议,以API呈现。
一个端口大概对应多个外部体系,差别的外部体系必要使用差别的适配器,适配器负责对协议进行转换。这样就使得应用程序能够以同等的方式被用户、程序、主动化测试、批处理脚本所驱动,并且可以在与实际运行的装备和数据库相隔离的环境下进行开发和测试。
一个端口对应多个适配器,是对一类外部体系的归纳,它体现了对外部的抽象。应用通过端口为外界提供服务,这些端口必要被精良地设计和测试。内部不关心外部如何使用端口,从一开始就要假定外部使用者是可替换的。
三、洋葱架构
洋葱架构是比力新的DDD架构,2008年Jeffrey Palermo已经提出了具有分层头脑的洋葱架构,如下图,同心圆代表软件的差别部门,从里向外依次是领域模子,领域服务,应用服务和外层的基础设施和用户终端。
洋葱架构根据依赖原则,界说了各层的依赖关系,越往里依赖程度越低,代码级别越高,越是焦点能力。外圆代码依赖只能指向内圆,内圆不必要知道外圆的环境,这种架构也是典型的分层架构,和DDD分层架构一样,都体现了高内聚,低耦合的设计特性。洋葱架构也常作为指导微服务设计的紧张架构之一。
洋葱架构与六边形架构有着相同的思路,都是通过编写适配器代码将应用焦点从对基础设施的关注中解放出来,避免基础设 施代码渗透到应用焦点之中。这样应用使用的工具和传达机制都可以轻松地替换,在一定程度上避免技术、工具或者供应商锁定。
洋葱架构分离了基础设施和业务应用,使得我们可以方便地模仿(Mock)基础实施,对业务应用进行测试。企业应用中存在着不止两个条理,洋葱架构还在业务逻辑中加入了一些在领域驱动设计的过程中被识别出来的条理:
四、结语
领域驱动DDD的分层架构、洋葱架构、六边形架构的体现情势稍有差别,对应落地到代码层面的实现条理关系也略有差别,但是焦点头脑都是一样的,按业务创建领域并进行业务解耦。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
莫张周刘王
金牌会员
这个人很懒什么都没写!
楼主热帖
06、etcd 写请求执行流程
软件测试项目实战经验附视频以及源码【 ...
网上书店管理系统项目【Java数据库编程 ...
四、WinUI3下TitleBar的自定义
【云原生】三、详细易懂的Docker 容器 ...
如何用同一套账号接入整个研发过程? ...
物联网5种无线传输协议特点大汇总 ...
c# sqlsugar,hisql,freesql orm框架全 ...
MySQL用户和权限管理
面向大规模神经网络的模型压缩和加速方 ...
标签云
挺好的
服务器
浏览过的版块
网络安全
快速回复
返回顶部
返回列表