NOTE

1.4 分层架构

1. 什么是分层架构 根据系统中的角色/职责拆分和组织代码单元的常规实践 上层依赖下层,上层可以感知到下层,下层感知不到上层 2. 分层架构的演进 2.1. 一层 2.2. 两层 也叫单机架构 2.3. 三层 也叫集中式架构,C/S和B/S架构 2.4. DDD四层 2.4.1. 传统四层架构 用户

Software Architecture & Engineering创建于 更新于 historical

这是历史学习笔记,可能存在过时或不完整的理解。

1. 什么是分层架构

根据系统中的角色/职责拆分和组织代码单元的常规实践 上层依赖下层,上层可以感知到下层,下层感知不到上层

2. 分层架构的演进

2.1. 一层

2.2. 两层

也叫单机架构 架构模式-两层

2.3. 三层

也叫集中式架构,C/S和B/S架构 架构模式-三层

2.4. DDD四层

2.4.1. 传统四层架构

架构模式-传统四层

用户接口层依赖了应用层+领域层+基础层 应用层依赖了领域层+基础层 领域层依赖了基础层 这个架构基础层成了核心

2.4.2. 依赖倒置四层架构

架构模式-依赖倒置四层

基础层依赖用户接口层+应用层+领域层 用户接口层依赖应用层+领域层 应用层依赖领域层 这个架构领域层成了核心

2.4.3. DDD四层架构

也叫分布式微服务架构 用户接口层:外部请求的入口。主要有facade接口,DTO以及DO数据的组装和转换的代码逻辑 应用层:聚合多个领域层的逻辑。主要有事件订阅以及发布等逻辑 领域层:核心业务逻辑 基础层:为其他各层提供基础服务,包括工具类、消息队列、缓存、数据库等

代码结构:

├─application
│  ├─event
│  └─service
├─domain
│  ├─aggreate0
│  │  ├─entity
│  │  ├─event
│  │  ├─repository
│  │  └─service
│  └─aggreate1
│      ├─entity
│      ├─event
│      ├─repository
│      └─service
├─infrastructure
│  ├─config
│  └─util
│      ├─api
│      ├─driver
│      ├─eventbus
│      └─mq
└─interfaces
    ├─assembler
    ├─dto
    └─facade

2.5. 六边形架构

分层架构的顶部和底部的层次从另一方面来说,就是应用的入口/出口 将抽象全部堆在domain层,将细节全部往application和infrastructure去推 一般从外到里是infrastructure、application和domain

2.6. 洋葱架构

和六边形架构一样,都通过编写适配器代码将应用核心从对基础设施的关注中解放出来,避免基础设施代码渗透到应用核心之中