知识卡片
应用层为什么必须"薄":只做编排,不做核心逻辑
内容
应用层连接用户接口层和领域层,主要职责是协调领域层多个聚合的领域服务、面向用例和业务流程完成服务的组合与编排,理论上不应该实现领域模型的核心领域逻辑,这正是应用层被要求设计得很”薄”的原因。应用层还承担着微服务之间服务调用的通道角色,一个微服务在应用层可以调用其他微服务的应用服务,完成跨微服务的组合编排;应用层内主要有应用服务、事件订阅发布等逻辑,应用服务负责组合、编排、转发,处理业务用例的执行顺序和结果拼装,还可以做安全认证、权限校验、事务控制等。书中特别提醒:千万不要把本该属于领域层的核心领域逻辑写进应用层,一旦这么做,领域模型会逐渐失焦,应用层和领域层之间原本清晰的边界会随时间推移变得混乱,最终一个原本边界清晰的四层架构,会不知不觉退化成业务逻辑混杂在一起的传统三层架构——这提醒任何分层设计:分层本身不会自动保证代码不腐化,如果开发者持续把不该放在某一层的逻辑图省事地塞进去,再精心设计的分层边界也会被逐渐侵蚀掉。
参考来源
- 位置:第10章《DDD分层架构》"10.1.2 应用层"(源文件:_epub-src/OEBPS/Text/chapter3-6-1-2.xhtml)
- 结论依据:原文说明"应用层负责协调领域层多个聚合的领域服务,面向用例和业务流程完成服务的组合和编排。所以理论上应用层不应该实现领域模型的核心领域逻辑……切记不要将本该在领域层的核心领域逻辑在应用层实现,这会使得领域模型失焦,时间一长应用层和领域层的边界就会变得混乱,边界清晰的四层架构慢慢就可能演变成业务逻辑混杂的三层架构了",直接支撑本卡片结论。
- 原始内容:切记不要将本该在领域层的核心领域逻辑在应用层实现,这会使得领域模型失焦,时间一长应用层和领域层的边界就会变得混乱,边界清晰的四层架构慢慢就可能演变成业务逻辑混杂的三层架构了。