一、Asp.net WebForms 与Asp.net MVC 概念

Asp.net是创建WEB应用的框架,MVC是能够用更好的方法来组织并管理代码的一种更高级架构体系。

我们可将原来的Asp.net称为 Asp.net WebForms,新的MVC称为Asp.net MVC。

二、Asp.net存在的问题

为什么微软还要推出Asp.net MVC?主要是因为Asp.net WebForm的性能问题。在Web应用程序中从两方面来定义性能:

1.响应时间:服务器响应请求的耗时

2.带宽消耗:同时可传输多少数据。

响应时间

WebForm因为采用服务器控件,每次请求都有转换逻辑,运行并转换服务器控件为HTML输出。如果使用一些复杂的控件,转换就会变的糟糕并且复杂,HTML的输出也是复杂的。由于不必要的转换从而增加了响应时间。所以该问题的解决方案就是摆脱后台代码(服务器控件),写成纯HTML代码。

带宽消耗

ASP.NET开发人员都非常熟悉Viewstates,因为它能够自动保存post返回的状态,减少开发时间。但是这种开发时间的减少会带来巨大的消耗,Viewstate增加了页面的大小。在做的加载测试中,与MVC 对比,我们发现Viewstate增加了两倍的页面存储。

页面尺寸的增加是因为viewstate产生了额外的字节。

1、HTML消耗

2、后台代码类的重用性

3、单元测试(既然无法实例化后台代码类,单元测试也是非常困难的,也无法执行自动化测试。必须手动测试。)

解决方案:

就是我们需要将后台代码迁移到独立的简单的类库,并且摆脱Asp.net服务器控件,使用HTML。

MVC是如何弥补WebForm存在的问题

先来看一张图:

Asp.Net MVC 由Model,View,Controller三部分组成。Controller中包含后台代码逻辑,View是ASPX,如纯HTML代码,Model是中间层。通过上图可获得这三部分的关系。

所以MVC的改变有两点,View变成简单的HTML,后台代码移到简单的.Net类中,称为控制器。

以下是Asp.net MVC 请求的通用步骤:

(1)首先获取控制器。

(2)依赖行为控制器创建Model对象,Model通过转换调用数据访问层。

(3)数据填充Model后,传递到View显示层,实现显示的目的。

为什么使用ASP.NET MVC?
易于进行单元测试
易于进行测试驱动开发
避免了WebForm中大量的ViewState导致页面文件变得臃肿

初步理解MVC的更多相关文章

  1. springBoot(1)---springboot初步理解

    springboot初步理解 在没有用SpringBoot之前,我们用spring和springMVC框架,但是你要做很多比如: (1)配置web.xml,加载spring和spring mvc 2) ...

  2. javascript 原型及原型链的初步理解

    最近折腾了好久,终于是把js里面的原型和原型链做了个初步的理解: 在这里,我打个比喻: 我(child),我妈constructor(构造函数)生了我:别人问我老妈跟谁生的我,于是此时我妈会指向我爸爸 ...

  3. Spring学习笔记--环境搭建和初步理解IOC

    Spring框架是一个轻量级的框架,不依赖容器就能够运行,像重量级的框架EJB框架就必须运行在JBoss等支持EJB的容器中,核心思想是IOC,AOP,Spring能够协同Struts,hiberna ...

  4. Graph Cuts初步理解

    一些知识点的初步理解_8(Graph Cuts,ing...) Graph cuts是一种十分有用和流行的能量优化算法,在计算机视觉领域普遍应用于前背景分割(Image segmentation).立 ...

  5. 通过Ruby On Rails 框架来更好的理解MVC框架

    通过Ruby On Rails 框架来更好的理解MVC框架   1.背景    因为我在学习软件工程课程的时候,对于 MVC 框架理解不太深入,只是在理论层面上掌握,但是不知道如何在开发中使用 MVC ...

  6. 深入理解MVC与MVP

    http://www.cnblogs.com/seaky/archive/2011/04/06/1982533.html 在深入分析MVC和MVP之前,我们有必要回顾下经典的三层架构.分层是计算机学科 ...

  7. 你是怎么理解“MVC”的

    MVC就是三个字母的组合,M-模型, V-视图, C-控制器. 这些在百度上随便一索就可以索到,而且网上对这三个部分的解释又过于笼统,使人没法完全理解MVC的含义.   这里我简单的谈谈我对MVC这三 ...

  8. <转>ASP.NET学习笔记之理解MVC底层运行机制

    ASP.NET MVC架构与实战系列之一:理解MVC底层运行机制 今天,我将开启一个崭新的话题:ASP.NET MVC框架的探讨.首先,我们回顾一下ASP.NET Web Form技术与ASP.NET ...

  9. ASP.NET MVC 理解MVC模式

    ASP.NET MVC 理解MVC模式 PS:MVC出来很久了,工作上一直没机会用,所以我也没去学.出于兴趣,工作之余我将展开对MVC的深入学习,通过博文来记录所学所得,并希望能得到各位园友的斧正. ...

随机推荐

  1. My97DatePickerBeta 时间选择控件用法

    用法说明:只需要调用一个js<script language="javascript" type="text/javascript" src=" ...

  2. kafka集群和zookeeper集群的部署,kafka的java代码示例

    来自:http://doc.okbase.net/QING____/archive/19447.html 也可参考: http://blog.csdn.net/21aspnet/article/det ...

  3. html部分---表单、iframe、frameset及其他字符的用法(以及name、id、value的作用与区别);

    <form action="aa.html" method="post/get"> /action的作用是提交到..,methed是提交方法,用po ...

  4. alias sample method——运行时间复杂度为O(1)的抽样算法

    根据离散离散概率分布抽样是一个常见的问题.这篇文章将介绍运行时间复杂度为O(1)的 alias method 抽样算法思想. 下面举例说明: 比如 a,b,c,d 的概率分别为 0.1,0.2,0.3 ...

  5. spark与storm的对比

    对比点 Storm Spark Streaming 实时计算模型 纯实时,来一条数据,处理一条数据 准实时,对一个时间段内的数据收集起来,作为一个RDD,再处理 实时计算延迟度 毫秒级 秒级 吞吐量 ...

  6. Nginx-server_name匹配规则

    server_name可为IP/domain/localhost/null等任何字符串(字符串server_name也可以用来匹配),注意各个 server 块的顺序. 1.如果只有一个server, ...

  7. 套接字I/O模型-WSAAsyncSelect

    利用这个异步I/O模型,应用程序可在一个套接字上接收以Windows消息为基础的网络事件通知.WSAAsyncSelect和WSAEventSelect提供读写数据能力的异步通知,但它们不提供异步数据 ...

  8. X-UA-Compatible设置兼容模式

    原文地址:http://www.cnblogs.com/kingboy2008/archive/2011/07/01/2226424.html   IE浏览器的兼容性一直是网站开发人员头疼的事情,众所 ...

  9. 012. asp.net生成验证码图片(汉字示例/字母+数字)

    protected void Page_Load(object sender, EventArgs e) { //生成验证码图片的基本步骤 string checkCode = "新年快乐& ...

  10. Spring注解实例

    public class ActivityAction extends CoreAction { private static final Logger log = Logger.getLogger( ...