后端常见分层模型

文章目录

  • 一、最经典标准分层(从上到下)
  • [1. 表示层 / 接入层(Controller / API)](#1. 表示层 / 接入层(Controller / API))
  • [2. 应用层 / 服务层(Service)](#2. 应用层 / 服务层(Service))
  • [3. 领域层(Domain / Model)](#3. 领域层(Domain / Model))
  • [4. 基础设施层(Infrastructure)](#4. 基础设施层(Infrastructure))
  • [二、最常见简化版(企业真实开发 90% 都长这样)](#二、最常见简化版(企业真实开发 90% 都长这样))
  • [三、DDD 风格分层(复杂业务)](#三、DDD 风格分层(复杂业务))
  • 四、三层架构(老经典)
  • 五、一张表秒懂所有分层
  • 六、终极一句话总结

一、最经典标准分层(从上到下)

复制代码
表示层 / 接入层
  ↓
应用层(服务层)
  ↓
领域层(业务核心)
  ↓
基础设施层(数据、存储、第三方)

也常被简化成大家最熟的:

复制代码
Controller → Service → Dao/Mapper → DB

我一层一层讲人话。


1. 表示层 / 接入层(Controller / API)

只管"进来的请求"和"返回的结果"。

职责:

  • 接收 HTTP/gRPC 请求
  • 参数校验
  • 权限、限流、日志
  • 调用 Service,把结果返回

绝不写业务逻辑!

例子:

java 复制代码
@RestController
@RequestMapping("/user")
public class UserController {
    @GetMapping("/{id}")
    public Result<UserVO> getUser(@PathVariable Long id) {
        return Result.success(userService.getById(id));
    }
}

2. 应用层 / 服务层(Service)

业务流程的总指挥。

职责:

  • 编排业务步骤(下单→扣库存→付款→通知)
  • 事务控制
  • 调用领域对象/表模块
  • 对外提供统一接口

它不实现细粒度业务,只调度

对应你刚才看的书里:

服务层 = 系统的 API,界面只跟它交互


3. 领域层(Domain / Model)

真正的业务逻辑所在地。

三种风格你已经学完了:

  1. 事务脚本:一段过程式代码搞定业务
  2. 表模块:一个类管一张表,操作记录集
  3. 领域模型:对象自带行为(充血模型)

这一层是系统的"大脑"。


4. 基础设施层(Infrastructure)

只管技术,不管业务。

包括:

  • DAO / Mapper / Repository(数据库访问)
  • 缓存、消息队列
  • HTTP客户端、第三方SDK
  • 日志、工具类

它为上层提供技术能力


二、最常见简化版(企业真实开发 90% 都长这样)

复制代码
Controller
   ↓
Service
   ↓
Model/Entity + Dao/Mapper
   ↓
DB
  • Controller:收请求、返回
  • Service:写业务流程、事务
  • Entity:纯数据
  • Dao/Mapper:查数据库

这就是 事务脚本 + Data Mapper 的现实版本。


三、DDD 风格分层(复杂业务)

复制代码
接入层
  ↓
应用层(Service,只编排)
  ↓
领域层(Domain Service + Entity + Value Object)
  ↓
基础设施层(Repo、存储、第三方)

特点:

  • 业务逻辑尽量下沉到领域对象
  • Service 只做流程调度
  • 数据访问藏在 Repository

四、三层架构(老经典)

复制代码
表示层
业务逻辑层(BLL)
数据访问层(DAL)

就是:

  • BLL ≈ Service + Domain
  • DAL ≈ Dao/Mapper

简单项目依然非常常用。


五、一张表秒懂所有分层

职责 不做什么
Controller 接收请求、参数、返回 业务、计算、SQL
Service 流程、事务、调度 复杂业务规则
Domain 业务规则、验证、计算 存储、HTTP
Dao/Mapper SQL、读写数据库 业务逻辑

六、终极一句话总结

后端分层 = 请求从上往下流,业务在中间,数据在最底下。

  • 上层只管接入
  • 中间层管业务
  • 下层管存储
相关推荐
拾贰_C2 小时前
【Ubuntu | Nvidia 】nvidia 驱动安装
linux·运维·ubuntu
zzzsde2 小时前
【Linux】EXT文件系统(2)
linux·运维·服务器
艾莉丝努力练剑2 小时前
【QT】QT快捷键整理
linux·运维·服务器·开发语言·图像处理·人工智能·qt
硅基导游2 小时前
bpf监控某个应用里各线程锁的申请得到及释放时间
服务器·互斥锁·性能监控
IMPYLH2 小时前
Linux 的 expand 命令
linux·运维·服务器
Irissgwe2 小时前
网络基础概念
linux·网络·网络基础概念
白慕慕2 小时前
tcp传输
linux·网络协议·tcp/ip
Mr成文2 小时前
【Linux/Ubuntu】OpenCode +Oh My OpenAgent安装配置实践
linux·运维·ubuntu
超b小哥2 小时前
【超详细】Claude Code Ubuntu平台完整部署指南
linux·人工智能·ubuntu·ai·claude code