04 · BUSINESS BACKENDP013 MIN
Controller、Service 与 Repository
按职责拆分 HTTP 适配、业务规则与持久化,让核心逻辑可测试可复用。
MENTAL MODELBACKEND LAYERS
01HTTP Controller
→02Application Service
→03Domain Rule
→04Repository
→05Database
先把概念与边界说清楚
定义告诉你它是什么,边界告诉你它不负责什么;企业系统最常见的误解通常发生在两者混用时。
Controller
解析 HTTP 输入、调用用例并把结果映射成响应。
Service
实现业务用例,协调权限、事务、领域规则、Repository 与事件。
Repository
提供面向业务的持久化操作,集中查询、租户范围和锁策略。
三个入口都要取消订单
REST、后台任务和客服脚本各复制一套取消逻辑,库存释放结果不同。
- 01
把 cancelOrder 放进应用 Service。
- 02
三种入口只负责适配各自协议。
- 03
Repository 提供条件迁移与库存操作。
一套业务规则被多入口复用,测试也不需要启动 HTTP 服务。
马上动手
- 把 createOrder 伪代码按三层归类。
- 识别授权应放 Controller 还是 Service。
常见坑
- Controller 直接调用 ORM 完成所有事
- Repository 承担业务状态机
- Service 之间循环依赖
05 · KNOWLEDGE CHECK授权为什么不能只放 Controller?查看答案⌄
答案
同一用例可能被队列、脚本或 GraphQL 调用;关键授权和数据范围必须靠近用例边界,避免非 HTTP 入口绕过。