news 2026/4/16 15:19:21

后端到底是什么架构?——从 MVC、三层、DDD 到洋葱/六边形的一次工程级对照

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
后端到底是什么架构?——从 MVC、三层、DDD 到洋葱/六边形的一次工程级对照

写后端写了一段时间后,很多人都会产生一个困惑:

👉 到底什么是“后端架构”?
👉 MVC 是不是后端架构?
👉 三层、DDD、洋葱、六边形到底是什么关系?

名词越来越多,但项目结构却越来越乱。

这篇文章,我尝试用工程视角,把这些常见“后端架构叫法”和“真实工程分层边界”一次性对齐。

一、先给结论:后端不是 MVP / MVVM

在后端领域,几乎不使用 MVP / MVVM

因为:

  • 后端没有 UI
  • 没有界面状态
  • 不存在视图绑定

👉 MVP / MVVM 本质是UI 架构,解决的是界面复杂度问题。

后端真正要解决的是:

  • 业务复杂度
  • 系统可演进性
  • 模块边界
  • 依赖方向
  • 基础设施隔离

所以,后端真正的主流架构,本质是:

👉分层架构 + 依赖控制 + 领域建模

二、后端真正稳定的“四层结构”

不管你听到的是 MVC、三层、DDD、洋葱、六边形,
几乎所有成熟后端系统,都可以抽象成下面这四层:

┌──────────────────────────┐ │ Interface / API 层 │ 接口与协议适配 ├──────────────────────────┤ │ Application 层 │ 业务流程编排 ├──────────────────────────┤ │ Domain 层 │ 业务核心模型 ├──────────────────────────┤ │ Infrastructure 层 │ 基础设施实现 └──────────────────────────┘

这是工程级后端结构的“底座”

三、每一层到底负责什么?

1️⃣ Interface / API 层(表现层、适配层)

典型形式:

  • Controller
  • Web / RPC / MQ 接口

职责只有一件事:

👉适配外部世界

包括:

  • 接 HTTP / RPC / MQ
  • 参数校验
  • DTO / VO 转换
  • 返回统一响应

不该做的事:

❌ 不写业务规则
❌ 不写 SQL
❌ 不做复杂事务
❌ 不做流程编排

这是很多项目最容易“写脏”的一层。

2️⃣ Application 层(应用层 / Service 层)

这是后端系统的调度中枢

它关心的是:

👉系统如何运转

典型职责:

  • 业务流程编排
  • 跨聚合操作
  • 事务边界
  • 权限 / 幂等 / 一致性控制
  • 调用多个 Domain / Repository / 外部系统

但它不应该沉淀核心业务规则

Application 层更像:

👉 “用例调度器 / 流程引擎”


3️⃣ Domain 层(领域层 / 核心层)

这是后端系统最重要的一层

它关心的是:

👉系统是什么

包含:

  • 领域实体(Entity)
  • 值对象(VO)
  • 聚合根(Aggregate)
  • 业务不变量
  • 领域服务(Domain Service)

特点是:

  • 不依赖数据库
  • 不依赖 Spring
  • 不关心 HTTP
  • 可纯 Java 单测

👉 这里放的是:业务真理,而不是技术细节。

4️⃣ Infrastructure 层(基础设施层)

这是“系统如何落地”的地方:

  • 数据库访问
  • Redis
  • MQ
  • 第三方系统
  • ORM / DAO
  • 各种 Client

典型形式:

  • Repository 实现
  • Mapper / DAO
  • 外部系统适配

服务于 Domain 和 Application
而不是反过来控制业务。

四、常见架构名词对照表

名词它在强调什么工程本质
MVCWeb 请求分层Interface + Model(弱化View)
三层架构工程落地结构Controller / Service / DAO
DDD业务建模方法Domain 层变厚
洋葱架构依赖方向依赖只能向内
六边形架构边界与适配多入口、多出口
Clean Architecture完整依赖规则同构分层模型

👉 这些不是互斥架构,
👉 而是同一套结构的不同观察角度

五、真正重要的是“边界”,不是名字

很多后端项目失败,不是选错架构名词,
而是边界失控

一个健康的后端系统,至少要守住这些边界

Interface 层

  • 只做协议适配
  • 不写业务、不写 SQL

Application 层

  • 负责流程与事务
  • 不承载核心业务模型

Domain 层

  • 承载业务规则
  • 不依赖技术实现

Infrastructure 层

  • 只做实现
  • 不控制业务

👉 架构是否成立,取决于边界是否干净。

六、MVC 在后端的真实形态

在后端:

  • C = Controller(接口层)
  • M = Domain + Repository
  • V = JSON / VO / Response

也就是说:

👉 后端的 View,已经退化成“数据结构”。

所以行业里仍说 MVC,
但工程上,真正使用的是分层 + 领域模型

七、一个可直接落地的工程结构模板

interfaces/ http/controller http/dto http/vo http/assembler application/ service command query domain/ model service repository (接口) infrastructure/ persistence client config

依赖方向:

interfaces → application → domain infrastructure → domain

👉 Domain 不依赖任何外层。

八、总结一句话

👉 后端不是 UI 架构问题,而是业务复杂度与系统演进问题
👉 后端架构的核心,不是 MVC 这个名字,而是:

  • 清晰分层
  • 明确边界
  • 正确依赖方向
  • 稳定业务内核

不管你叫它三层、DDD、洋葱还是六边形,
最终都要回到这四层结构。

九、阶段性结论

后端不用 MVVM / MVP

后端主流是分层 + 领域模型

架构优劣取决于边界,不取决于名字

Domain 层决定系统上限

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 13:40:36

LED数码管驱动译码器:实战接线指南

以下是对您提供的博文内容进行 深度润色与工程化重构后的版本 。整体风格更贴近一位有十年嵌入式硬件开发经验的工程师在技术博客中自然、扎实、略带温度的分享—— 去AI腔、强实践感、重逻辑流、轻教条气 ,同时严格遵循您提出的全部优化要求(如&…

作者头像 李华
网站建设 2026/4/16 16:12:19

一句话搞定部署!Unsloth命令行使用技巧

一句话搞定部署!Unsloth命令行使用技巧 你是否还在为大模型微调的漫长等待和显存爆满而头疼?下载、安装、环境配置、依赖冲突……光是准备阶段就耗掉半天时间。其实,用Unsloth训练自己的模型,根本不需要写几十行脚本、不需手动编…

作者头像 李华
网站建设 2026/4/16 12:26:31

Speech Seaco Paraformer跨平台部署:Windows/Linux兼容性测试

Speech Seaco Paraformer跨平台部署:Windows/Linux兼容性测试 1. 为什么需要跨平台兼容性验证? 语音识别不是实验室里的玩具,而是要真正跑在办公室电脑、客户服务器、甚至开发者的笔记本上。Speech Seaco Paraformer 这个基于阿里 FunASR 的…

作者头像 李华
网站建设 2026/4/16 13:00:11

unet image Face Fusion广告创意应用?个性化海报生成实战

unet image Face Fusion广告创意应用?个性化海报生成实战 1. 这不是普通换脸,而是广告人的新画笔 你有没有遇到过这样的场景:电商团队要赶在节日大促前上线20款商品海报,每张都要把模特换成品牌代言人;设计部门接到需…

作者头像 李华
网站建设 2026/4/16 12:46:36

升级Z-Image-Turbo后,我的AI绘画效率翻倍了

升级Z-Image-Turbo后,我的AI绘画效率翻倍了 以前做AI绘画,我总在“等”字上耗掉大半时间:等模型加载、等提示词调试、等8步变50步、等一张图出完再改下一句描述——直到我把本地部署的Z-Image换成了Z-Image-Turbo。不是参数更多、不是显卡升…

作者头像 李华
网站建设 2026/4/16 16:24:40

小白也能懂的Z-Image-Turbo部署教程:浏览器访问即可生成图片

小白也能懂的Z-Image-Turbo部署教程:浏览器访问即可生成图片 你是不是也遇到过这些情况? 想用AI画张图,却卡在“安装依赖”“配置环境”“编译报错”的环节; 试了几个在线工具,又担心输入的提示词被存下来、图片被上传…

作者头像 李华