初步理解MVC
一、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的更多相关文章
- springBoot(1)---springboot初步理解
springboot初步理解 在没有用SpringBoot之前,我们用spring和springMVC框架,但是你要做很多比如: (1)配置web.xml,加载spring和spring mvc 2) ...
- javascript 原型及原型链的初步理解
最近折腾了好久,终于是把js里面的原型和原型链做了个初步的理解: 在这里,我打个比喻: 我(child),我妈constructor(构造函数)生了我:别人问我老妈跟谁生的我,于是此时我妈会指向我爸爸 ...
- Spring学习笔记--环境搭建和初步理解IOC
Spring框架是一个轻量级的框架,不依赖容器就能够运行,像重量级的框架EJB框架就必须运行在JBoss等支持EJB的容器中,核心思想是IOC,AOP,Spring能够协同Struts,hiberna ...
- Graph Cuts初步理解
一些知识点的初步理解_8(Graph Cuts,ing...) Graph cuts是一种十分有用和流行的能量优化算法,在计算机视觉领域普遍应用于前背景分割(Image segmentation).立 ...
- 通过Ruby On Rails 框架来更好的理解MVC框架
通过Ruby On Rails 框架来更好的理解MVC框架 1.背景 因为我在学习软件工程课程的时候,对于 MVC 框架理解不太深入,只是在理论层面上掌握,但是不知道如何在开发中使用 MVC ...
- 深入理解MVC与MVP
http://www.cnblogs.com/seaky/archive/2011/04/06/1982533.html 在深入分析MVC和MVP之前,我们有必要回顾下经典的三层架构.分层是计算机学科 ...
- 你是怎么理解“MVC”的
MVC就是三个字母的组合,M-模型, V-视图, C-控制器. 这些在百度上随便一索就可以索到,而且网上对这三个部分的解释又过于笼统,使人没法完全理解MVC的含义. 这里我简单的谈谈我对MVC这三 ...
- <转>ASP.NET学习笔记之理解MVC底层运行机制
ASP.NET MVC架构与实战系列之一:理解MVC底层运行机制 今天,我将开启一个崭新的话题:ASP.NET MVC框架的探讨.首先,我们回顾一下ASP.NET Web Form技术与ASP.NET ...
- ASP.NET MVC 理解MVC模式
ASP.NET MVC 理解MVC模式 PS:MVC出来很久了,工作上一直没机会用,所以我也没去学.出于兴趣,工作之余我将展开对MVC的深入学习,通过博文来记录所学所得,并希望能得到各位园友的斧正. ...
随机推荐
- 使用Matlab对灰度图像编程实现2D的傅里叶变换
1. 先载入一幅灰度图像,如下: (非灰度图) 2. 利用函数fft2,对其进行快速傅立叶变换, 并利用函数fftshift 将变换后的图像原点移动到频率矩形的中心. 3. 利用abs()函 ...
- BUTTON标签和INPUT标签的区别【转】
一句话概括主题:<button>具有<input type="button" ... >相同的作用但是在可操控性方面更加强大. HTML 4.01规范的Fo ...
- Android关于主线程和非主线程
必须在主线程执行的任务: (1)UI更新 必须在非主线程中执行的任务 (1)Http请求 如执行:ImageHelper.getInstance().loadImageSync(picUrl); 外面 ...
- HDU 4599 概率DP
先推出F(n)的公式: 设dp[i]为已经投出连续i个相同的点数平均还要都多少次才能到达目标状态. 则有递推式dp[i] = 1/6*(1+dp[i+1]) + 5/6*(1+dp[1]).考虑当前这 ...
- PHP实例开发(1)PHP站内搜索
PHP站内搜索:多关键字.加亮显示 1.SQL语句中的模糊查找 $sql = "SELECT * FROM `message` WHERE `content`like '%$k[0]%' a ...
- java for each 错误
简而言之,for each 适用于不改变数组,容器元素的场合,如果改变,必须用索引或者iterator. 例如: A[] arrayA = new A[5]; for (A a : arrayA) { ...
- URAL 1137 Bus Routes(欧拉回路路径)
1137. Bus Routes Time limit: 1.0 secondMemory limit: 64 MB Several bus routes were in the city of Fi ...
- HTML初讲
整理老师所讲: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www ...
- C++@子类类型转换为父类类型
static_cast(*this) to a base class create a temporary copy. class Window { // base class public: vir ...
- Fragment用app包还是v4包解析
转自:http://blog.csdn.net/zc0908/article/details/50721553 1)问题简述 相信很多的朋友在调用Fragment都会遇到下面的情况: 这个时候问题来了 ...