ASP.NET WebForm

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

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

  1. ViewState可能过大。访问量非常大的情况下,viewstate占用的流量相当可观,这样直接影响页面传输速度。
  2. Page Life Cycle:过于复杂。比如控件的Init事件在Page的Init事件之前执行,而Load事件是控件后执行。事件处理的事件
  3. 缺乏对HTML的控制:一般每个控件负责自己的HTML输出,开发人员无法修改输出的HTML结构,除非自己写控件。而且HTML元素的ID比较复杂,也不便于js访问。
  4. 界面设计和逻辑开发的关注分离做的不好:Webform开发是一个页面对应一个code-behind class,原本的目的是将展示和逻辑分离。但是在实际开发的时候,面对某些需求,还是经常会在class中写一些控制界面展示的代码。
  5. 对测试的支持不好:页面和code-behind class绑定在一起,无法单独对逻辑进行测试;不支持单元测试。

ASP.NET MVC

ASP.NET MVC的优点如下:

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

参考

  1. Pro ASP.NET MVC Framework
    1. http://www.asp.net/mvc
    2. http://aspnetwebstack.codeplex.com/
  2. ASP.NET Web Forms Weaknesses
  3. MVP模式
  4. Monorails
    1. http://yok.cnblogs.com/archive/2005/11/05/269383.html
    2. http://www.cnblogs.com/firstyi/category/108880.html
  5. Ruby on Rails
    1. http://www.cnblogs.com/hardrock/archive/2006/08/18/480668.html
    2. http://www.cnblogs.com/dahuzizyd/category/97947.html

ASP.NET Webform和ASP.NET MVC的区别的更多相关文章

  1. .net mvc 站点自带简易SSL加密传输 Word报告自动生成(例如 导出数据库结构) 微信小程序:动画(Animation) SignalR 设计理念(一) ASP.NET -- WebForm -- ViewState ASP.NET -- 一般处理程序ashx 常用到的一些js方法,记录一下 CryptoJS与C#AES加解密互转

    .net mvc 站点自带简易SSL加密传输   因项目需要,传输数据需要加密,因此有了一些经验,现简易抽出来分享! 请求:前端cryptojs用rsa/aes 或 rsa/des加密,后端.net ...

  2. 性能差异 ASP.NET WebForm与ASP.NET MVC

    一.为什么说 ASP.NET WebForm 比 ASP.NET MVC 要差? WebForm 顾名思义,微软一向主打简单化,窗体模式,拖拽控件就能做网站了, 然而这也引发了许多 Java 和 .N ...

  3. ASP.NET WebForm与ASP.NET MVC的不同点

    ASP.NET WebForm ASP.NET MVC ASP.NET Web Form 遵循传统的事件驱动开发模型 ASP.NET MVC是轻量级的遵循MVC模式的请求处理响应的基本开发模型 ASP ...

  4. 关于ASP.NET WebForm与ASP.NET MVC的比较

      WebForm的理解 1. WebForm概念 ASP.NETWebform提供了一个类似于Winform的事件响应GUI模型(event-drivenGUI),隐藏了HTTP.HTML.Java ...

  5. Asp.net: WebForm基础上构建Mvc的方法

    添加引用: System.Web.Routing System.Web.Abstractions System.Web.Mvc 添加文件夹: Controllers, Views,  Views / ...

  6. ASP.NET Webform或者ASP.NET MVC站点部署到IIS下,默认情况下.json文件是不能被访问的,如果请求访问.json文件,则会出现找不到文件的404错误提示

    解决方法 <system.webServer> <staticContent> <remove fileExtension=".woff" /> ...

  7. asp.net中三层架构与mvc之区别?

    对于标题中的问题,如果是没有同时接触三层架构和mvc的初级.net开发人员,想必一定会非常糊涂和混淆.关于此我也百度过N回,看过N多帖子和 回答,但几乎没有人能表述清楚.近期我从典型mvc+entit ...

  8. 【深入ASP.NET原理系列】--Asp.Net Mvc和Asp.Net WebForm共用一套ASP.NET请求管道

    .NET FrameWork4在系统全局配置文件(如在如下目录中C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config) 中添加了一个名字叫Url ...

  9. ASP.NET WebForm / MVC 源码分析

    浏览器 Url:https//localhost:6565/Home/Index ,https//localhost:6565/WebForm1.aspx,请求服务器(构建请求报文,并且将请求报文发送 ...

随机推荐

  1. 超炫的3D翻转模板

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  2. For循环输出九九乘法表

    题:使用For循环输出九九乘法表 解析: 1*1=1 1*2=2  2*2=4 1*3=3  2*3=6  3*3=9 .... 1*9=9  ........ .....9*9=81 可以看做j*i ...

  3. csuoj 1022: 菜鸟和大牛

    http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1022 1022: 菜鸟和大牛 Time Limit: 1 Sec  Memory Limit: 1 ...

  4. winform 控件开发1——复合控件

    哈哈是不是丑死了? 做了一个不停变色的按钮,可以通过勾选checkbox停下来,代码如下: 复合控件果然简单呀,我都能学会~ using System; using System.Collection ...

  5. C#: enum

    C#的枚举类型跟C++差不多,一般我们将enum设为单个状态,比如enum color_t { RED, BLACK, GREEN}, 只能选择一个 而有的时候枚举可以作为位运算来进行与或运算,比如C ...

  6. 实验一 操作系统模仿cmd

    实验一.命令解释程序的编写 专业:商软(2)班   姓名:王俊杰  学号:201406114252 一.        实验目的 (1)掌握命令解释程序的原理: (2)掌握简单的DOS调用方法: (3 ...

  7. kafka监控工具kafkaOffsetMoniter的使用

    简介 KafkaOffsetMonitor是由Kafka开源社区提供的一款Web管理界面,用来实时监控Kafka的Consumer以及Partition中的Offset,可以在web界面直观的看到每个 ...

  8. c语言小程序

    这是一个用c语言写的小程序,功能是随机输出30道100以内的四则运算,先生成两个随机数,再通过随机数确定四则运算符号,最后输出题目. #include<iostream> using na ...

  9. Jquery文档接口遍历

    // children():获取所有子元素 <%@ page language="java" contentType="text/html; charset=utf ...

  10. Job类

    当我们在写MapReduce程序的时候,通常,在main函数里,我们会像下面这样做.建立一个Job对象,设置它的JobName,然后配置输入输出路径,设置我们的Mapper类和Reducer类,设置I ...