MVC和WebForm区别
WebForm的理解
1、 WebForm概念
ASP.NETWebform提供了一个类似于Winform的事件响应GUI模型(event-drivenGUI),隐藏了HTTP、HTML、JavaScript等细节,将用户界面构建成一个服务器端的树结构控件(Control),每个控件通过ViewState保持自己的状态,并自动把客户端的js事件和服务器端的事件联系起来。这种做法使得开发WinForm和WebForm程序具有相近的开发体验,填平WinForm开发(有状态、面向对象的)和WebForm开发(无状态、面向HTML的)之间的鸿沟。
2、WebForm 请求流程
比如访问 http://www.qidian.com/Default.aspx
1、Http请求(物理地址:Default.aspx)
①发送请求: 浏览器向服务器发送请求报文,此时由IIS虚拟目录接收。(通过配置过IIS,把网站挂载在服务器上,通过访问虚拟目录的方式访问网站的。)
②转交请求: 服务器端的IIS软件接收到请求后,把请求交给.NET FrameWork进行处理。
③创建页面类对象:.NET FrameWork根据请求的地址index.aspx,会创建对应的index_aspx类的对象(页面对象)。
IIS的内部机制:
实现一个IHttphandler的接口
该接口实现一个ProcessRequest方法
该方法会调用对应页面的Page_load方法
处理的业务逻辑或者是访问数据库的代码
要输出的Html或者其它内容
2、返回给浏览器
①转交回复: 通过IIS传输出给浏览器,要输出的html元素或其他内容(html+js+css等)
②解析为图形界面:浏览器解析html代码,并翻译为图形化界面
如图:
2、 WebForm的优点:
1. 有大量的服务器控件支持,比如:GridView、Repeater等控件可以方便的进行数据绑定,从而减少的大量代码的编写。
2. 学习成本低,由于微软封装的比较深,造成深入学习的难度加大。
3. 基于事件驱动编程,如:click事件等,aspx和cs文件分离,即显示逻辑和处理逻辑分离。
4. 支持视图状态,每个控件以“隐藏域”的形式存在当前表单页面未达到“有状态”,即ViewState。
3、 WebForm的缺点
1. 由于使用的ViewState会增加页面的负担,造成性能不是很高。
2. 代码重用性不高,缺少对并行开发的支持,
3. 因为采用code-behind 代码后植技术,使aspx页面与cs紧密耦合度太高。
4. 对Seo不友好,因为URL指定具体的aspx页面。
5. 因为紧密耦合度太高、使用大量的事件处理函数,不利于单元测试。
二、 MVC的理解
1、 MVC的概念
Asp.netMvc架构模式是一种 低耦合、可测试的web应用程序框架,它是基于CLR和成熟的MVC架构构建的。ASP.NET MVC不支持ViewState和服务器控件。
2、 MVC的请求流程
比如访问:http://www.google.com.hk/FirstPage/Default
1、Http请求(逻辑地址:FirstPage/Default)
①发送请求(FirstPage/Default)
②转交请求(同上)
③创建类对象+方法
.NET FrameWork根据路由配置,解析URL,并创建news类的对象,并调用对象的index方法。通过View方法加载视图,然后访问视图文件夹下的index.cshtml
2、返回给浏览器
如图:
3、 MVC的优点
1. 架构降低了程序间的耦合性。
2. 不支持ViewState,页面更加干净,可以提升程序的性能。
3. 支持并行开发,可扩展性好,继承了asp.net的特性,表单验证、缓存、会话等。
4. 由于程序耦合度低,可以比较顺利的进行单元测试。
5. 通过修改路由规则,可以控制生成自定义的url,因此控制生成seo友好的url将更加容易。
6. 强类型view实现,更安全,更高效。
4、 MVC的缺点
需要有一定的html、css、js、jquery前端技术,也就增加了一些学习的成本。
MVC和WebForm的选择场景
新开发的项目建议采用MVC。
想要快速开发的中小型项目可以选择WebForm。
比较关注单元测试、性能、SEO、代码重用性的话建议采用MVC。
最后结语
MVC和WebForm都有自己的优缺点,目前两种技术都存在,证明都有自己的价值,虽然现在MVC应用越来越广发,我们不能一味的否定WebForm。一个高级程序员用WebForm实现的网站性能并不一定比初级程序员用MVC实现的网站性能差,最重要的还是努力提升自己的技术能力才是王道!
MVC和WebForm区别的更多相关文章
- ASP.NET MVC与WebForm区别
[转贴一] 使用ASP.NET MVC框架,创建默认项目,第一直观感觉就是地址都是Rewrite过的.对源码和配置文件稍加分析不难看出,MVC使用了httpModules来拦截地址请求,具体用到了Sy ...
- 解析ASP.NET WebForm和Mvc开发的区别
因为以前主要是做WebFrom开发,对MVC开发并没有太深入的了解.自从来到创新工场的新团队后,用的技术都是自己以前没有接触过的,比如:MVC 和EF还有就是WCF,压力一直很大.在很多问题都是不清楚 ...
- MVC与WebForm的一些区别
MVC与WebForm的一些区别 它们都是ASP.NET WEB开发的两种方式 .但是他们也是有一些不同.做个小结. 1.MVC是没有服务器端控件这么一说的,也就是没有viewstate,也就不会产生 ...
- 解析ASP.NET WebForm和Mvc开发的区别 分类: ASP.NET 2013-12-29 01:59 11738人阅读 评论(5) 收藏
因为以前主要是做WebFrom开发,对MVC开发并没有太深入的了解.自从来到创新工场的新团队后,用的技术都是自己以前没有接触过的,比如:MVC 和EF还有就是WCF,压力一直很大.在很多问题都是不清楚 ...
- MVC与WebForm的简单的比较
MVC与WebForm的简单的比较 ASP 强制程序员将业务逻辑和展示页放到一个文件中 WebForm 允许程序员将业务逻辑与页面展示分开到不同的文件中,并且提供强大的开发平台来写 业务逻辑代码 ...
- .net MVC, webAPI,webForm集成steeltoe+springcloud实现调用服务中心服务的总结
开始之前,如果没接触过Autofac的,可以移步到Autofac官方示例学习一下怎么使用:https://github.com/autofac/Examples .net 下集成steeltoe进行微 ...
- Mvc与WebForm优缺点及Mvc的使用
关于Mvc与WebForm的优缺点在网上的评论可谓不胜枚举,但脱离了我们的项目来谈这些意义就不大了.以我们这次改版来看,WebForm的优势有以下几点: 一,可以使用<#include>, ...
- MVC和WebForm 中国省市区三级联动
MVC和WebForm是微软B/S端的两条腿,两种不同的设计理念,相对来说MVC更优于WebForm对于大数据的交互,因为WebForm是同一时间传输所有数据,而MVC它只是传输所用到的数据,更精确, ...
- mvc设计模式和mvc框架的区别
Spring中的新名称也太多了吧!IOC/DI/MVC/AOP/DAO/ORM... 对于刚刚接触spring的我来说确实晕了头!可是一但你完全掌握了一个概念,那么它就会死心塌地的为你服务了.这可比女 ...
随机推荐
- centos7升级系统内核
1)升级 方法一: rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org rpm -Uvh http://www.elrepo.or ...
- elasticsearch之入门hello(java)一
1.书写pom.xml文件 <dependencies> <dependency> <groupId>org.elasticsearch</groupId&g ...
- PMP:3.项目经理角色
成员角色:整合指挥者 在团队中的职责:负终责 知识技能:综合技能&沟通 定义: 职能经理专注于对某个职能领域或业务部门的管理监督. 运营经理负责保证业务运营的高效性. 项目经理是由执行组织 ...
- WPF 通过线程使用ProcessBar
WPF下使用进度条也是非常方便的,如果直接采用循环然后给ProcessBar赋值,理论上是没有问题的,不过这样会卡主主UI线程,我们看到的效果等全部都结束循环后才出现最后的值. 所以需要采用线程或者后 ...
- 用document.readyState实现网页加载进度条
概述 之前以为给网页设置加载进度条很麻烦,今天一学真是超级简单,记录下来供以后开发时参考,相信对其他人也有用. readyState 主要运用了document.readyState和nprogres ...
- dubbo rpc调用,接收到的bean为null原因?
前几天对接公司内部其他部门的系统,用dubbo调用,dubbo看起来很简单,但是却让我们调试了好久啊! 下面是调试纪录: 1. 调用该服务时,直接调不通,查看错误为 no provider ? 然后就 ...
- 修改hosts文件用来观看coursera视频
52.84.246.90 d3c33hcgiwev3.cloudfront.net 52.84.246.252 d3c33hcgiwev3.cloudfront.net 52.84.246.144 d ...
- Python - 使用Pyinstaller将Python代码生成可执行文件
1 - Pyinstaller简介 Home-page: http://www.pyinstaller.org PyInstaller是一个能够在多系统平台(Windows.*NIX.Mac OS)上 ...
- OC学习2——C语言特性之函数
1.OC是在C语言的基础上进行扩展的,在OC中直接用C语言进行coding也是可以通过编译的.因此,函数定义的语法格式如下: 函数返回值类型 函数名(形参列表) { //由零条或多条可执行性语句组成的 ...
- Django model select的各种用法详解
<Django model update的各种用法介绍>文章介绍了Django model的各种update操作,这篇文章就是她的姊妹篇,详细介绍Django model select的用 ...