为什么我们应该停止说“MVC”,而改说“RCMV”

发布: (2025年12月21日 GMT+8 07:01)
3 min read
原文: Dev.to

Source: Dev.to

MVC 的问题

MVC(模型、视图、控制器)是 web 开发中最流行的架构术语之一,但它并未完整描述现代 web 应用的实际工作方式。
它解释了关注点的分离,却省略了执行流程,而执行流程对于理解请求处理至关重要。

真正的请求流程

请求必须首先匹配到路由。典型的流程如下:

Request → Router → Controller → Model → View

这与经典的 “MVC” 顺序不同。正确的组件顺序是:

  1. Router(路由器) – 将传入请求匹配到路由。
  2. Controller(控制器) – 验证意图,协调请求,并委派职责。
  3. Model(模型) – 结构化并管理数据(规则、持久化、业务约束)。
  4. View(视图) – 渲染最终输出。

引入 RCMV

RCMV(Router, Controller, Model, View)并不是要取代 MVC;它 扩展 了 MVC,以反映现代应用实际响应请求的方式。

Router(路由器)

  • 充当应用的真正入口点。
  • 决定哪段代码应处理请求以及请求是否被允许。
  • 没有路由,就没有页面加载、没有 API 响应,也不会有 CRUD 操作。

Controller(控制器)

  • 仅在路由允许请求后才被激活。
  • 协调请求,验证意图,并将工作委派给模型。
  • 拥有数据;它负责对数据进行编排。

Model(模型)

  • 负责结构化并管理数据。
  • 强制执行规则、持久化和业务约束。
  • 直接响应用户;响应由控制器完成。

View(视图)

  • 最终的目的地,负责为客户端渲染响应。

为什么 RCMV 很重要

  • LaravelDjangoRailsExpress 等框架的工作方式保持一致。
  • 通过揭示真实的入口点,帮助开发者调试实际问题。
  • 通过使路由和请求处理显式化,帮助团队避免 spaghetti 代码。
  • 与领域驱动设计(DDD)自然契合,促进更清晰的系统设计。

重要说明

RCMV 是 MVC 的 扩展,而不是替代。它仅在请求生命周期的第一步加入了路由器。

最后思考

MVC 是否足够,还是现代开发需要更好的思维模型?考虑采用 RCMV,以反映现代 web 应用的真实流程。

Back to Blog

相关文章

阅读更多 »