前言
首先看下领域驱动设计中对应用层和领域层的解释:

image.png
从解释中我们可以看出,应用层的任务是与其他系统应用层合作、为领域层进行协调,实际上还包括了翻译等工作,具体工作可以参考一下我的上一篇博客: https://www.jianshu.com/p/e833fe5544c3
领域服务的主要职责是表达业务概念、业务状态、业务规则。
理论看起来终归是理论,落地的时候实际上两者没那么好划分,我们在落地过程中也做了一些探索,下面是我们的一些见解,仅供参考
领域服务于应用服务区分
1、从领域通用语言区分
- 领域层的所有对象,包括领域服务是符合领域通用语言的,即你写的领域服务要能用通用语言描述出来服务
- 应用服务不需要通用语言来描述
2、从圈复杂度区分
- 应用服务的逻辑的圈复杂度一般等于1,或者比较小,即代码只能有一条路径,或者有多条简单路径,如果有多条,那么产生多条路径的分支条件应该是依赖同一个领域对象,比