0 概述
本文主要在实际工作积累,谈谈个人对架构分层的理解。
1 为什么要分层
- 如果你的业务非常简单,完全可以不分层,反而分层只会增加工作量
- 如果业务稍微复查一些,如果不分层将会难以维护,牵一发而动全身,试下想下如果页面上需要展示用户会员等级时候,如果没有分层那么将从头改到尾。
- 分层的目标是软件易维护、可扩展,让每一层的职责单一(高内聚),每一层只能依赖同层下一层,不乱调用(低耦合)。
2 经典分层架构
最为常见的经典的三层架构:接口层(user interface)、业务逻辑层(business logic)、数据访问层(data access),这种架构比较适合业务规模不是很复杂的场景。
3 DDD 分层架构
Evans在《领域驱动设计》中提到的分层架构
- api 层与外部用户/系统交互的,常见的如RPC接口,HTTP接口
- 应用层 组织整个应用的流程,对领域层域服务进行流程编排完成相应的工作
- 领域层 系统核心层,负责表达业务概念、规则、状态,完成领域中属于自己应有的行为而不是完成业务,比如人具备吃个能力,是个与业务无关的行为。具体是吃的西瓜还是苹果由上层的Manager 或者Service 来决定(业务来)。
- 基础设施层,基础设施层围绕领域层、应用层、接口层提供支撑