ASP.NET Web Form 与 ASP.NET MVC 区别

Asp.net 微软提供web开发框架或者技术。分Web Form和ASP.NET MVC。下面简单说明各自优缺点及使用场景。html

Web Form

ASP.NET Webform提供了一个相似于winform的事件响应GUI模型(event-driven GUI),隐藏了HTTP、HTML、JavaScript等细节,将用户界面构建成一个服务器端的树结构控件(Control),每一个控件经过ViewState保持本身的状态,并自动把客户端的js事件和服务器端的事件联系起来。这种作法使得开发WinForm和WebForm程序具备相近的开发体验,填平WinForm开发(有状态、面向对象的)和WebForm开发(无状态、面向HTML的)之间的鸿沟。jquery

这种设计在大型网站开发的时候,暴露出一系列弱点:web

ViewState可能过大。访问量很是大的状况下,viewstate占用的流量至关可观,这样直接影响页面传输速度。
Page Life Cycle(页面生命周期):过于复杂。好比控件的Init事件在Page的Init事件以前执行,而Load事件是控件后执行。事件处理的事件
缺少对HTML的控制:通常每一个控件负责本身的HTML输出,开发人员没法修改输出的HTML结构,除非本身写控件。并且HTML元素的ID比较复杂,也不便于js访问。
界面设计和逻辑开发的关注分离作的很差:Webform开发是一个页面对应一个code-behind class,本来的目的是将展现和逻辑分离。可是在实际开发的时候,面对某些需求,仍是常常会在class中写一些控制界面展现的代码。
对测试的支持很差:页面和code-behind class绑定在一块儿,没法单独对逻辑进行测试;不支持单元测试。编程

优势:

1.支持丰富的服务器控件。如:GridView和ListView能够绑定数据,从而减小了大量的代码编写缓存

2.支持视图状态,每一个控件状态以“隐藏域”的形式存在当前表单页面来达到“有状态”,这就是ViewState服务器

3.基于事件驱动编程, 如:click事件等,aspx页面与cs文件分离,即显示逻辑与处理逻辑分离,便于分工,美工 、编程。不像asp代码混乱架构

4.学习成本低mvc

缺点:

1.站在项目架构的角度,web form 不是很理想架构模式,尽管可使用经典的三层架构或者mvp,,但不是最优秀的。框架

2.性能 viewstate成功解决了asp问题,但一样引入新的问题,viewstate页面存储势必增长页面大小、下降程序性能asp.net

3.代码可重用性很差;缺乏对并行开发支持,由于aspx页面与cs紧密耦合过高; Seo不友好,由于 url指定具体aspx页面;不利于单元测试,由于使用大量事件处理函数

 

ASP.NET MVC

Asp.net Mvc架构模式是一种 低耦合、可测试的web应用程序框架,它是基于CLR和成熟的MVC架构构建的。ASP.NET MVC不支持ViewState和服务器控件。

ASP.NET MVC的优势以下:

采用MVC架构:分离了关注点,好比开发Controller的时候,只需关注如何处理交互,从request中得到什么数据,业务逻辑交给Model处理,还须要把哪些数据传给页面用于展现,如何展现交给View处理。
更好的扩展性:ASP.NET MVC框架由一些列独立的组件构成,你能够轻松替换,如路由系统、the View Engine、the controller factory或者其它框架的组件。
更好的可测性:关注点的分离另一个好处就是更好的可测性。
可以彻底控制输出的HTML。
强大的路由功能

优势:

1.架构下降了程序间的耦合性,M V C,分层,目标明确

2.性能 不支持viewstate,完成html,已于结合jquery使用,提供程序性能

3.支持并行开发,可扩展性好,继承asp.net 特性:表单验证、缓存、会话等。

缺点:

没有viewstate和基于事件的编程,上手慢,学习成本高。

 

使用场景

1. 快速开发------>web form

2. 单元测试、性能-------->mvc

3. 大量使用 js、jquery ------> mvc

4. 代码重用性------->mvc

相关文章
相关标签/搜索