代码设计与代码结构
soa架构(按层封装)
设计要点
- 按照将数据链路分为三层:
- Controller:负责对外交互例如Web层
- Service:主要的核心业务逻辑的封装层
- Repository:数据交互层,封装与数据库的操作
- 依赖关系自顶向下
- 实现简单并且容易理解
缺点
- 无法展现具体的业务领域信息。(如何理解这句话?由于分层架构并不是按照业务的流程进行分层,分层架构的核心是在技术层面,如果超出技术圈外,产品和业务无法理解,自然无法很好的和业务领域进行融合。)
领域驱动架构(按功能封装)
设计要点
- 按照业务域进行划分,按照不同的业务进行分包和设计,一个业务包就包含该业务领域的所有实现
- 业务域内部按照SOA架构做水平分层
缺点
- 和SOA架构并没有很大的区别,该架构在业务领域上更贴合业务。
六边形架构(端口和适配器)
上图中Orders是业务领域的抽象
设计要点
- 实现业务领域和底层实现(数据库、框架等)隔离
按组件封装
设计要点
- 将“业务逻辑”与“持久化代码”合并在一起,称为“组件"
- 通过OrderService实现组件与外部的隔离