1. Domain Service(领域服务)与 Application Service(应用服务)的清晰边界中业务规则 vs 编排
请说明 Domain Service(领域服务)与 Application Service(应用服务)的清晰边界,业务规则与编排各自属于哪一层?
- 领域服务与应用服务的职责差异
- 业务规则属于领域层,编排属于应用层
- 何时使用领域服务
Domain Service 属于领域层,承载无法自然归属到某个实体或值对象的领域业务规则,例如"转账需要校验两个账户币种并计算手续费"这类跨越多个对象的领域逻辑。Application Service 属于应用层,负责用例编排(use case orchestration):协调仓储、领域服务、事务边界、发送消息、权限校验等,但不承载领域业务规则。清晰的边界是:应用服务"编排"(谁调用谁、事务怎么开、仓储怎么用),领域服务"规则"(业务约束、领域计算)。领域服务方法应无状态、语义化,应用服务调用领域服务完成业务并管理事务。
把业务规则放应用层会导致"贫血模型 + 事务脚本",领域逻辑散落各处难以复用和测试。把编排放领域层则会让领域层依赖基础设施(仓储、事务),破坏依赖方向。边界清晰后,领域层可独立测试,应用层薄而清晰。