后端常见分层模型

文章目录

  • 一、最经典标准分层(从上到下)
  • [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、读写数据库 业务逻辑

六、终极一句话总结

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

  • 上层只管接入
  • 中间层管业务
  • 下层管存储
相关推荐
сокол6 分钟前
【网安-Web渗透测试-内网渗透】内网横向移动——IPC连接
服务器·windows·网络安全·系统安全
剑神一笑7 分钟前
Linux xargs 命令深度解析:从管道到命令构建的桥梁
linux·运维·chrome
jimy124 分钟前
Oracle的always free账户,提高网络使用率的保活脚本
服务器·网络·oracle
xhbh66634 分钟前
TCP端口转发不生效?IP转发、防火墙、SELinux排查手册
服务器·ip·端口流量转发·路由端口转发·ip隐藏·tcp 端口转发
xhbh66638 分钟前
Windows网络转发如何配置?netsh命令完整指南
服务器·网络·windows·ip·端口流量转发·路由端口转发·ip隐藏
量子炒饭大师1 小时前
【Linux系统编程】Cyberpunk在霓虹丛林中构建堡垒 ——【关于shell命令及其运行原理】
linux·运维·服务器·shell
夜猫子ing1 小时前
《嵌入式 Linux 控制服务从零搭建(一):项目立意与架构总览》
linux·嵌入式硬件
IT大白鼠1 小时前
主流Linux文件系统稳定性及性能分析
linux·运维·服务器·文件系统
瀚高PG实验室1 小时前
debezium在LANG=zh_CN.UTF-8下,无法解析timestamp类型的列值为BC的字段
服务器·数据库·postgresql·瀚高数据库
南境十里·墨染春水1 小时前
linux学习进展 I/O复用函数初步
linux·运维·学习