新闻详情

新闻详情

首页 / 资讯中心 / 详情

DDD里的领域服务,到底什么时候该用?

发布时间:2026/9/4 18:12:31来源:尧图网络
DDD里的领域服务,到底什么时候该用?
做DDD的项目迟早都会遇到一个问题聚合根放不下的逻辑到底往哪放有人说领域服务是可选的聚合根本身就能承载大部分业务逻辑领域服务只是补充。看起来是对的其实错的离谱。但凡真正做过复杂业务的人都会发现领域服务一定会出现。因为聚合根是封闭的计算单元只负责维护自己的状态不碰数据库不调外部接口。但现实中的很多业务规则都需要依赖数据库、其他微服务或者外部系统的数据才能完成。这些职责显然不应该放到聚合根里面。那放应用服务里行不行项目初期当然可以。但随着业务越来越复杂应用服务里的业务规则会越来越多最后一个接口几百行代码应用服务越来越胖领域模型反而越来越薄DDD最终又退化成了传统三层架构。所以当应用服务开始承担越来越多领域规则的时候就应该把这些稳定的业务规则下沉到领域服务。领域服务不是可选项而是DDD真正落地以后必然会出现的一层。在我参与的项目里领域服务主要承担三类职责。第一依赖外部数据才能完成的领域计算。第二聚合根放不下的批量业务规则。第三无法归属于某一个聚合根的领域规则。这些都属于业务规则本质上应该留在领域层而不是应用层。另外还有一条原则必须坚守的就是领域服务之间禁止互相调用。一旦允许领域服务互调今天A调B明天B调C领域层很快就会变成一张蜘蛛网最后和传统三层架构里Service相互调用没有区别。跨聚合、跨模块的协调应该交给应用服务。应用服务负责流程编排领域服务负责业务规则两者职责不要混在一起。那领域服务里能不能调用其他微服务答案是能但必须通过防腐层。领域服务不能直接依赖Dubbo、Feign这些RPC框架而是应该依赖Domain层定义的Gateway接口由基础设施层负责具体实现。这样领域层始终依赖抽象而不是依赖技术框架。小结领域服务存在的意义不是为了让DDD看起来更规范而是为了给那些放不进聚合根、又属于领域规则的逻辑找到一个真正合适的归宿。我一直坚持两个原则1领域服务必须存在。2领域服务之间禁止互相调用。当你发现应用服务越来越臃肿、领域模型越来越薄的时候通常不是DDD有问题而是你的领域服务该出现了。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

G120变频器模拟量电压调速:从接线到参数设置的完整实践指南 2026/9/4 18:09:52

G120变频器模拟量电压调速:从接线到参数设置的完整实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
NAS 异地访问的三种网络方案:DDNS、端口映射与虚拟局域网 2026/9/4 18:09:52

NAS 异地访问的三种网络方案:DDNS、端口映射与虚拟局域网

家里的 NAS 在局域网里很好用,但到了公司、学校或出差途中,访问方式就会受到公网地址、NAT 类型和上行带宽的影响。真正需要解决的不是“安装哪个客户端”,而是让外部设备能够稳定、安全地找到 NAS。本文只讨论网络原理和配置思路&#xff0c…

阅读更多 →
毕业设计之基于springboot的社区共享互助平台的设计与实现 2026/9/4 18:09:52

毕业设计之基于springboot的社区共享互助平台的设计与实现

题目:基于springboot的社区共享互助平台的设计与实现一、项目介绍随着人们生活的不断优化,社区共享互助的频率急剧增加,有关社区共享互助的各种信息量也在不断成倍增长。面对庞大的信息量,就需要有社区共享互助平台来提高工作的效…

阅读更多 →
毕业设计之springcloud基于微服务架构下的图书馆管理系统的设计与实现 2026/9/4 18:09:52

毕业设计之springcloud基于微服务架构下的图书馆管理系统的设计与实现

题目:springcloud基于微服务架构下的图书馆管理系统的设计与实现一、项目介绍随着世界经济信息化、全球网络化的到来推动信息线上管理的飞速发展,为图书馆管理的改革起到关键作用。若想达到安全,快捷的目的,就需要拥有信息化的组织…

阅读更多 →
基于YOLOv8与CRNN的银行卡信息自动识别系统:从检测到识别的完整实践 2026/9/4 18:09:52

基于YOLOv8与CRNN的银行卡信息自动识别系统:从检测到识别的完整实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
秋叶ComfyUI整合包:中文用户AI图像生成进阶指南 2026/9/4 18:06:51

秋叶ComfyUI整合包:中文用户AI图像生成进阶指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞