什么是 MVC?MVC 与传统 WebForms 的对比

什么是 MVC?

MVC 是模型(Model),视图(View)和控制(Controller)的缩写,其目的是实现Web 系统的职能分工。其中,Model 层实现系统中的业务逻辑;View 层用于与用户的交互;Controller 层是 Model 与 View 之间沟通的桥梁,可以分派用户的请求并选择恰当的视图以用于显示,同时还可以解释用户的输入并将它们映射为模型层可执行的操作。

  1. 控制器
    接收用户输入,并完成模型、视图的调用。Controller 处理用户交互,从 Model 中获取数据并将数据传给指定的 View 。
  2. 视图
    View 是用户接口层组件,主要是将 Model 中的数据展示给用户。cshtml、ASPX 和ASCX 文件提供处理视图的职责。
  3. 模型
    Model 主要是存储或者是处理数据的组件,实现业务逻辑层对实体类相应数据库的操作,如 CRUD(Create、Read、Update、Delete),包括数据、验证规则、数据访问和业务逻辑等应用程序信息。Model具有两方面的含义:DomainModel 和 ViewModel。

    • 领域模型 DomainModel:不仅仅是一个实体类,而是整个业务处理流程的一个规则,是实现业务逻辑层对实体类的相应操作,包括;逻辑操作与数据库操作,如验证规则、数据访问和业务逻辑等应用程序信息。
    • 视图模型 ViewModel:是与显示页面强关联的模型对象,用于实现页面强类型,如做了连接查询得到的结果要显示到前台,就没有相应的对象存在,这时就可以新建一个类来包含结果集中的行。

其中的 ASP.NET MVC 就是一款对输入、输出进行分离的 UI 层框架。
MVC 模式基本等同于三层模式(数据访问层、业务逻辑层、表示层)UI 层指 View 与Controller ,业务逻辑层、数据访问层、模型层都被包含在 Model 中。

MVC 的优点:健壮性、代码重用、结构。
使用三层架构的好处:项目结构更清楚、分工更明确,有利于后期的维护和升级。虽然它会带来一定的性能损失(因为当子程序模块未执行结束时主程序模块只能处于等待状态,说明将应用程序划分层次会带来执行速度上的一些损失),但是却在能够提高团队开发效率。

传统 WebForms 与 MVC 的对比

WebForms 的请求模型:
WebForms的请求模型

WebForms 的优点:

  • 支持事件模型开发,利益于丰富的服务器端组件。可以迅速搭建 web 应用。
  • 使用方便,入门容易。
  • 控件丰富。

WebForms 的缺点:

  • 封装太强,很多底层东西让初学者不是很明白。
  • 入门容易,提升很难。
  • 复杂的生命周期模型学习起来并不容易。
  • 控制不灵活。
  • ViewState 处理,影响性能。

ASP.NET MVC 的实现原理:
MVC的实现原理

MVC 的特点:

  • 更加简洁,更加接近原始的“请求-处理-响应”。
  • 更加开放、更多的新特点、社区活跃。
  • 不会取代 WebForms 。
  • 底层跟 WebForms 是一样的,只是管道上处理不同而已。
  • MVC 只是表示层的一种新方式。

MVC 的优点:

  • 很容易将复制的应用分成 M、V、C 三个组件模型。通过 Model、View 和 Controller 有效的简化复杂的架构,体现了很好的隔离原则。
  • 因为没有使用 server-based froms,所以程序员控制得更加灵活,页面更加干净。
  • 可以控制生成自定义的 URL,对于 seo 友好的 URL 更是不在话下。WebForms 要额外做路由重写来实现伪静态的形式。
  • 强类型 View 实现,更安全、更可靠、更高效。
  • 让 Web 开发可以专注于某一层,有利于开发中的分工,更利于分工配合,适用于大型架构开发。
  • 很多企业已经使用MVC作为项目开发框架,招聘明确要求熟悉 MVC 开发模式,有些项目架构就是 MVC+EF+WebAPI+…。
  • 松耦合、易于扩展和维护。
  • 有利于组件的重用。
  • ASP.NET MVC 更好地支持单元测试(Unit Test)。
  • 在团队开发模式下表现更出众。
  • MVC 将代码和页面彻底分离,分离到了两个文件中,即视图和控制器。WebForms 的 Codebehind 技术没有完全对代码和前台页面进行分离,耦合度太高。ASPX 和 ASPX.cs是典型的继承关系。

猜你喜欢

转载自blog.csdn.net/yiyelanxin/article/details/80964711
今日推荐