认识ASP.NET MVC

一、MVC 的本质:不是技术,是“理念/架构模式”

  • MVC = Model–View–Controller
  • 不属于某一种语言,而是一种关注点分离(Separation of Concerns)的设计思想
  • 各语言/平台只是按这个理念实现了自己的 MVC 框架
平台典型 MVC 框架
JavaStruts、Spring MVC
PHPThinkPHP、Laravel、Smarty(偏 View)
.NETASP.NET MVC、Vici MVC 等

理论上,任何人都可以写一个 MVC 框架,本质就是一个类库(dll)


二、ASP.NET MVC 的“身份”

  • 官方出品:微软 2009 年发布第一个版本
  • 核心程序集:System.Web.Mvc.dll
  • 安装 VS / MVC 模板后,默认就存在于电脑中
  • 创建 MVC 项目时,自动引用相关 DLL

和 WebForm 的关系

  • 底层完全一致,都是 ASP.NET
  • 共用:
    • HttpApplication
    • HttpContext
    • HttpModule
    • HttpHandler
  • 区别在上层抽象方式不同
对比WebFormASP.NET MVC
页面模型事件驱动(类似 WinForm)请求驱动
前后端aspx + aspx.csController + View + Model
耦合度较高
控制力封装强,偏“黑盒”更透明、可控

三、MVC 三大角色各司其职

Controller(控制器)——大脑

  • 接收请求
  • 决定:
    • 调哪个 Model
    • 如何处理业务
    • 返回哪个 View
  • 不关心页面长什么样

Model(模型)——数据 & 业务

  • 和数据库打交道
  • 实体类(Entity)
  • 业务逻辑、数据校验
  • 可包含 Repository / Service 层

View(视图)——展示层

  • 只负责:
    • HTML
    • CSS
    • 页面交互
  • 尽量不包含业务/数据逻辑

核心目标:分离关注点,方便协作与维护


四、从 ASP → ASP.NET → ASP.NET MVC 的演进

阶段特点问题
ASPHTML + 脚本混写难维护
ASP.NET WebForm前后台分离(aspx / cs)事件模型重、耦合高
ASP.NET MVC彻底分层学习曲线稍陡

五、补充

  1. MVC 概念最早不是给 Web 用的
    • 1971 年左右提出
    • 最初用于 Smalltalk 的 GUI 应用
  2. WinForm / WPF 一般不用 MVC
    • 常见的是:
      • MVP
      • MVVM
  3. System.Web.dll 仍然可用
    • MVC 并没有“推翻”ASP.NET
    • 很多底层能力依然来自它

总结

ASP.NET MVC 是微软基于 MVC 理念,在 ASP.NET 基础上封装的一套 Web 开发框架,通过 Controller、Model、View 的分离,实现关注点分离和更清晰的架构。


如果你愿意,我可以帮你:

  • 把这份内容整理成 标准课堂笔记版
  • 或画一份 MVC 请求流程脑图(文字版)
  • 或按“考试问答”形式出几道题给你练手

你下一步想怎么用这份内容?

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注