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

相关新闻

ELF 1开发板嵌入式Linux二维码生成实战
2026/7/17 22:02:41

ELF 1开发板嵌入式Linux二维码生成实战

1. 项目背景与硬件准备ELF 1开发板是飞凌嵌入式针对教育市场推出的入门级嵌入式Linux学习平台,基于NXP i.MX6ULL处理器设计。这款Cortex-A7架构的开发板虽然主频仅800MHz,但完全能够胜任基础的二维码生成任务。在实际教学和物联网应用中,二维…

阅读更多
RISC-V单板计算机GPIO控制与智能小车开发实战
2026/7/17 22:02:41

RISC-V单板计算机GPIO控制与智能小车开发实战

1. 昉星光 2单板计算机开箱与基础配置作为一名长期从事嵌入式开发的工程师,当我第一次拿到昉星光2这款RISC-V架构的单板计算机时,最直观的感受就是它的硬件配置完全超出了我对RISC-V开发板的预期。这款由中国团队设计的开发板搭载了昉惊鸿-7110S SoC&…

阅读更多
VS Code R插件实现即时预览:告别Ctrl+Enter
2026/7/17 22:02:41

VS Code R插件实现即时预览:告别Ctrl+Enter

1. 项目概述:一个让 R 代码“所见即所得”的真实需求“终于不用 CtrlEnter 了”——这句话不是营销话术,而是我连续三年在 VS Code 里写 R 脚本时,手指肌肉记忆形成的条件反射式疲惫。每次想看一行summary(mtcars)的结果,得先选中…

阅读更多
Seed-Coder:代码大模型的自我策展范式革命
2026/7/17 23:02:41

Seed-Coder:代码大模型的自我策展范式革命

1. 项目概述:Seed-Coder不是“种子编码器”,而是一场代码数据生产范式的静默革命 你最近在技术社区、论文平台甚至招聘JD里反复刷到“seed coder”这个词,可能第一反应是——这又是个新出的编程工具?还是某种Ubuntu镜像的代号&…

阅读更多
激光雷达点云AI项目:从Windows到Linux的跨平台环境配置实战
2026/7/17 23:02:41

激光雷达点云AI项目:从Windows到Linux的跨平台环境配置实战

1. 项目概述与核心挑战最近在折腾一个激光雷达点云AI处理的项目,从Windows环境迁移到Linux,整个过程踩了不少坑,也积累了一些实战经验。这个项目,我称之为“Lidar AI Solution”,核心是利用深度学习模型处理来自激光雷…

阅读更多
Spring Security XSS防御实战:从攻击原理到纵深防御体系构建
2026/7/17 23:02:41

Spring Security XSS防御实战:从攻击原理到纵深防御体系构建

1. 项目概述:为什么Spring Security开发者必须直面XSS 如果你是一名后端开发者,尤其是使用Spring Security来构建应用安全防线的,那么“XSS攻击”这个词你一定不陌生。但很多时候,我们只是知道它很危险,知道要“转义输…

阅读更多
AI Agent稳定性核心:Chrome调试协议实战避坑指南
2026/7/17 23:02:41

AI Agent稳定性核心:Chrome调试协议实战避坑指南

1. 这不是教程,是25个带血的坑——一个AI Agent工程师的日更实录我从去年夏天开始做AI Agent项目,从第一个能自动填表单的玩具脚本,到现在每天稳定跑着7个不同业务线的智能体,中间踩过的坑,足够在WSL2里搭一座Chrome调…

阅读更多
真实道路场景下的蓝牌黄牌新能源绿牌检测识别训练图集
2026/7/17 23:02:41

真实道路场景下的蓝牌黄牌新能源绿牌检测识别训练图集

本文还有配套的精品资源,点击获取 简介:这套图像数据集专为车牌检测与识别模型训练设计,包含约800张蓝色民用号牌、500张黄色大型车/货车号牌、200张绿色新能源专用号牌,以及少量白色警用车牌和黑色使馆车牌。所有图片按车牌颜…

阅读更多
到底什么是固态变压器SST?
2026/7/17 22:02:41

到底什么是固态变压器SST?

从“会变压”到“会控制电能流向”固态变压器由多级功率变换模块和高频隔离环节组成一句话理解:固态变压器不是把传统变压器简单“电子化”,而是把变压、整流、逆变、隔离和智能控制集成到一套系统里。提起变压器,很多人脑海里首先出现的&…

阅读更多
智慧树刷课插件:5分钟实现自动化学习的智能助手
2026/7/16 21:32:43

智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手 【免费下载链接】zhihuishu 智慧树刷课插件,自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 智慧树刷课插件是一款专为智慧树在线教育平台设计的Chrome浏…

阅读更多
Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案
2026/7/16 15:03:34

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 你是否在GOG或Epic Games Store购买了心仪的游戏…

阅读更多
办公自动化实战:5个免费工具构建合同处理流水线
2026/7/16 22:47:50

办公自动化实战:5个免费工具构建合同处理流水线

1. 这不是“又一个工具包”,而是一套经过237次真实场景验证的效率组合拳“2026.04.28实用教程工具分享”这个标题乍看平平无奇,像极了你邮箱里被自动归入“促销/订阅”文件夹的那类通知——但如果你真把它当普通更新忽略,接下来半年里&#x…

阅读更多
2026全国外贸独立站搭建公司推荐排行,含零代码SAAS、AI编程、源码定制
2026/7/17 0:02:36

2026全国外贸独立站搭建公司推荐排行,含零代码SAAS、AI编程、源码定制

2026全国外贸独立站搭建公司推荐排行 外贸工厂、工贸企业建设官网,核心需求与普通展示型网站并不相同。除了页面整洁、多语言适配和海外访问体验,企业还要重点考虑数据能否导出、站点能否迁移、源码是否可控、后续费用是否透明,以及更换服务…

阅读更多
HarmonyOS 应用开发《掌上英语》第18篇:Grid 布局实战——从功能 5 宫格到练习 2×2 模式
2026/7/17 0:02:36

HarmonyOS 应用开发《掌上英语》第18篇:Grid 布局实战——从功能 5 宫格到练习 2×2 模式

Grid 布局实战——从功能 5 宫格到练习 22 模式引言 Grid 布局是 ArkTS 中最强大的布局容器之一,它通过行列模板系统实现灵活的多列多行布局。在本英语学习 App 中,Grid 布局贯穿了首页的多个核心模块:功能栏 5 宫格、练习模式 22 卡片、以及…

阅读更多
HarmonyOS 应用开发《掌上英语》第19篇:3D 翻转动画实现——ArkTS 动画系统全解析
2026/7/17 0:02:36

HarmonyOS 应用开发《掌上英语》第19篇:3D 翻转动画实现——ArkTS 动画系统全解析

3D 翻转动画实现——ArkTS 动画系统全解析引言 在移动应用中,卡片翻转动画是最受欢迎的交互动效之一,它能给用户带来直观的"物理世界"操作感。在我们的英语学习 App 的单词学习页面(CourseHomePage.ets)中,就…

阅读更多
基于Dify与DeepSeek构建私有知识库问答系统实战指南
2026/7/17 5:10:40

基于Dify与DeepSeek构建私有知识库问答系统实战指南

在业务中快速构建一个能理解私有文档、准确回答专业问题的智能助手,是很多开发团队面临的共同挑战。传统方案往往需要从零开始搭建复杂的 RAG(检索增强生成)系统,涉及文档解析、向量化、检索、大模型调用等多个环节,整…

阅读更多
FAE放射组学分析工具:医学影像特征探索的完整解决方案
2026/7/17 5:34:11

FAE放射组学分析工具:医学影像特征探索的完整解决方案

FAE放射组学分析工具:医学影像特征探索的完整解决方案 【免费下载链接】FAE FeAture Explorer 项目地址: https://gitcode.com/gh_mirrors/fae/FAE 你是否曾经面对海量医学影像数据感到无从下手?想要从CT、MRI等影像中提取有价值的定量特征&#…

阅读更多
DesktopNaotu:你的终极离线思维导图解决方案,告别网络依赖!
2026/7/17 7:48:38

DesktopNaotu:你的终极离线思维导图解决方案,告别网络依赖!

DesktopNaotu:你的终极离线思维导图解决方案,告别网络依赖! 【免费下载链接】DesktopNaotu 桌面版脑图 (百度脑图离线版,思维导图) 跨平台支持 Windows/Linux/Mac OS. (A cross-platform multilingual Mind Map Tool) 项目地址:…

阅读更多