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的我来说确实晕了头!可是一但你完全掌握了一个概念,那么它就会死心塌地的为你服务了.这可比女 ...
随机推荐
- urlrewrite的rule怎么写
一.正则表达式教程 常用正则如下: . 换行符以外的所有字符 \w 匹配字母或数字或下划线或汉字 \s 匹配任意的空白符 \d ...
- 2019.02.15 codechef Favourite Numbers(二分+数位dp+ac自动机)
传送门 题意: 给444个整数L,R,K,nL,R,K,nL,R,K,n,和nnn个数字串,L,R,K,数字串大小≤1e18,n≤65L,R,K,数字串大小\le1e18,n\le65L,R,K,数字 ...
- Unity3D中声音播放
Unity3D 播放声音需要使用 Audio Source 组件,并且需要 Audio Listener 组件配合,不然无法听到声音.Main Camera 会默认有 Audio Lisetener. ...
- 中国移动物联网ONENET平台数据本地采集工具
吧从中国移动物联网平台上接收的数据 实时按天保存为CSV文件或者是SQL SERVER数据库中方便进行数据处理 还可设置显示最大值,最小值,报警值,报警推送,tts语音报警等贴心功能
- FZU.Software Engineering1816 ·The Second Assignment of the Team
1.Team Leader Link: 柯奇豪:点我 2.NABCD Model: Need(需求)——客户需求是什么? *. 希望能够有一款集成日常办公所需功能的软件(如:想法搜集.投 ...
- iOS调用QQ发起临时会话
iOS调用QQ发起临时会话 iOS调用qq前先判断是否安装qq, 之后通过OpenURL打开对用的qq NSURL *url = [NSURL URLWithString:@"mqq://& ...
- xtrabackup备份mysql-2 增量备份
---恢复内容开始--- 增量备份 ---恢复内容结束---] 增量备份恢复 1,重演日志 2,恢复数据
- Win10手记-IIS部署网站问题解决
最近在自己的Win10电脑上尝试部署ASP.NET网站时出现了问题,经过多方查找定位到IIS为问题来源. 开始之前 先描述下技术环境: 1.Windows 10 PC 2.Windows 自带的IIS ...
- LeetCode--No.011 Container With Most Water
11. Container With Most Water Total Accepted: 86363 Total Submissions: 244589 Difficulty: Medium Giv ...
- docker学习篇(二)---- 基础篇
引言 在之前的学习中,我知道了docker的三大组件分别是----镜像,容器,仓库.了解了这三个组件也就初步理解了docker.所以我学习了这三个组件,并记录下来. 镜像 docker在运行一个容器时 ...