ASP.NET MVC与ASP.NET WebFormASP.NET MVC与ASP.NET WebForm

     ASP.NET
MVC是微软公司的均等放缓WEB开发框架,整合了“模型-视图-控制器”架构的速与干净,是很快开发极现代之合计及技术。它是传统ASP.NET
WebForm的一个全面的替代品。

     ASP.NET
MVC是微软公司之等同磨蹭WEB开发框架,整合了“模型-视图-控制器”架构的全速与洁净,是神速开发极现代的思考及技能。它是传统ASP.NET
WebForm的一个完善的替代品。

1、当今的Web开发

1、当今的Web开发

    
1)REST(Representational State
Transfer)已经变成应用程序在HTTP上互操作的第一系架构,完全而SOAP失色。REST是因代表真实世界实体的资源(URI)和表示在这些资源达到可用的正规化操作方法(HTTP方法)来描述一个应用程序。由此HTTP方法和资源地址之整合就可以针对资源执行相应的操作,这种做就是REST,执行这种操作的请也叫做REST化的请求。(对于REST的理解个人还是匪透,后面会指向这个概念进行续)

    
1)REST(Representational State
Transfer)已经改为应用程序在HTTP上互操作的第一系架构,完全而SOAP失色。REST是依据代表真实世界实体的资源(URI)和象征于这些资源上可用的专业操作方法(HTTP方法)来描述一个应用程序。经HTTP方法以及资源地址之组成就好对资源执行相应的操作,这种组合就是REST,执行这种操作的恳求也叫做REST化的恳求。(对于REST的理解个人还是免透,后面会指向之概念进行补缺)

现阶段底Web应用程序不只是供HTML服务,通常为待以XML或JSON数据提供于用户,而WebForm很为难支撑。

当下之Web应用程序不只是提供HTML服务,通常也要用XML或JSON数据提供被用户,而WebForm很麻烦支撑。

    
2)整个软件行业向着敏捷和测试驱动开发方向的开拓进取,如单元测试工具(NUnit、xUnit)、模仿框架(Moq、Rhino、Mocks)、控制反转容器(Ninject、AutoFac)、持续集成服务器(CruiseControl、TeamCity)、对象关系映射器(NHibernate、Subsonic、EF、Dapper、Petapoco)、UI自动化工具的供。(测试驱动开发TDD思想:首先描述想如果收获的表现范例,称为测试规范;然后进行软件设计,这样经过实施依附于当下无异于落实之一律法测试,来证明应用程序的风平浪静与正确

    
2)整个软件行业向着敏捷和测试驱动开发方向的发展,如单元测试工具(NUnit、xUnit)、模仿框架(Moq、Rhino、Mocks)、控制反转容器(Ninject、AutoFac)、持续集成服务器(CruiseControl、TeamCity)、对象关系映射器(NHibernate、Subsonic、EF、Dapper、Petapoco)、UI自动化工具的供。(测试驱动开发TDD思想:首先描述想使拿走的行为范例,称为测试规范;然后进行软件设计,这样经过实施依附于即无异于兑现之平等仿照测试,来验证应用程序的安居乐业与科学

    
3)顺应Web标准和REST化的矛头。

    
3)顺应Web标准及REST化的取向。

2、ASP.NET WebForm的史以及问题

2、ASP.NET WebForm的史与问题

    
ASP.NET WebForm的技巧堆栈,如下图所示:

    
ASP.NET WebForm之技艺堆栈,如下图所示:

    
爱博体育app下载 1

    
爱博体育app下载 2

    
此图的意思是WebForm建立于ASP.NET之上,而ASP.NET又建以.NET平台之上,MVC框架所从底意图是顶替WebForm。

    
此图的含义是WebForm建立在ASP.NET之上,而ASP.NET又起于.NET平台之上,MVC框架所起的用意是代WebForm。

    
WebForm的计划性思想是,让Web开发以感觉到上同Windows
Form开发同。开发者不再用为同一雨后春笋独立的HTTP请求与响应进行工作,可以看其是千篇一律栽状态化的UI,人们可以淡忘WEB及其无状态本质,转而用一种“拖–放”式设计器来创造UI,并设想所有事务还发生在服务器上。

    
WebForm的宏图思想是,让Web开发在感到上与Windows
Form开发同。开发者不再需要以同一文山会海独立的HTTP请求和应进行工作,可以当它们是一模一样种植状态化的UI,人们可以淡忘WEB及其无状态本质,转而用一栽“拖–放”式设计器来创造UI,并考虑所有事情都生在服务器上。

    
乘时空之延迟,WebForm在其实项目受到出现了有弱点:

    
乘机年华的缓,WebForm在实质上项目蒙出现了一部分欠缺:

    
1)视图状态重负:维护状态的实际机制,也不怕是ViewState(视图状态)导致在客户端与服务器之间传输大块数据(达到几百KB),而且来回于每次要中,导致响应时间非常缓慢,增加了服务器的带动富需求;

    
1)视图状态重负:维护状态的莫过于机制,也便是ViewState(视图状态)导致在客户端与服务器之间传输大块数据(达到几百KB),而且来回于每次要中,导致响应时间老缓慢,增加了服务器的带动富需求;

    
2)页面生命周期:连接客户端和劳务器端事件处理器代码的体制很复杂,对于应用程序运行中非常不便展开保障;

    
2)页面生命周期:连接客户端和劳动器端事件处理器代码的建制好复杂,对于应用程序运行期间死为难展开维护;

    
3)关注分离的一无是处看法:本身将代码从HTML提取出来,放到后台代码类吃展开拍卖是坏雷同种植非常好之方,但是片开发者在后台代码中将展现代码和运用工作逻辑混合在一起,导致最后代码乱并难以保障;

    
3)关注分离的一无是处看法:本身将代码从HTML提取出来,放到后台代码类吃进行拍卖是可怜一致种异常好之法子,但是有的开发者在后台代码中将展现代码和运用工作逻辑混合在一起,导致最后代码乱并难以保障;

    
4)HTML的受限控制:服务器控件将团结渲染成HTML,但并无是所愿意看的HTML,在ASP.NET
4之前,并无可知可怜好之行使CSS。同时会生成不可预知或复杂的ID,这样JavaScript就充分麻烦展开访问。

    
4)HTML的受限控制:服务器控件将协调渲染成HTML,但连无是所企望观看底HTML,在ASP.NET
4之前,并无可知十分好之应用CSS。同时会生成不可预知或复杂的ID,这样JavaScript就好为难展开走访。

    
5)有瑕疵的虚幻:WebForm试图尽量隐去HTML和HTTP(这是透过WebForm的抽象层实现之)。当您兑现和谐的方法时,需要放弃这种肤浅,迫使采取回发事件机制的逆向工程。所以这种肤浅对于开发者而言就是做一个硕大的拦路虎和挑战;

    
5)有欠缺的空洞:WebForm试图尽量隐去HTML和HTTP(这是由此WebForm的悬空层实现的)。当你实现协调之措施时,需要放弃这种肤浅,迫使采取回发事件机制的逆向工程。所以这种肤浅对于开发者而言就整合一个巨大的绊脚石以及挑战;

    
6)低而测试性:WebForm的这种紧耦合体系布局并无切合为单元测试,对于集成测试为杀具挑战性;

    
6)低可是测试性:WebForm的这种紧耦合体系布局并无抱吃单元测试,对于集成测试为异常具挑战性;

3、ASP.NET
MVC的特点

3、ASP.NET
MVC的特点

    
1)ASP.NET
MVC框架实现了MVC模式(MVC模式于1978年即曾提出来了),由于ASP.NET
MVC极大的精益求精了关心分离,所以专门适用于Web应用程序。因为和MVC应用程序的并行遵循着用户动作和视图更给之本来周期,在是周期中,假设视图是无状态的。这和支持Web应用程序的HTTP请求与应措施特别适合。

    
1)ASP.NET
MVC框架实现了MVC模式(MVC模式于1978年即令曾提取出来了),由于ASP.NET
MVC极大的改善了关怀分离,所以特别适用于Web应用程序。因为与MVC应用程序的彼此遵循着用户动作和视图更给之当然周期,在是周期中,假设视图是任状态的。这与支持Web应用程序的HTTP请求与应措施很适合。

    
2)可扩展性,MVC框架被构建成一样多重独立的机件,如路由于网、视图引擎、控制器工厂,你得生爱地用一个要好之例外实现来替换这些零件,通常发生三种植选择:

    
2)可扩展性,MVC框架被构建成同文山会海独立的机件,如路由于网、视图引擎、控制器工厂,你可以老爱地用一个协调之不同实现来替换这些零部件,通常发生三种植选择:

         
a、使用组件现行的默认实现,此种植可以满足大多数应用程序;

         
a、使用组件现行的默认实现,此种好满足大多数应用程序;

         
b、派生默认实现之一个子类,以调整其行为;

         
b、派生默认实现之一个子类,以调动其行事;

         
c、用接口或者抽象基类的一个初的落实来了替换该器件;

         
c、用接口或者抽象基类的一个新的贯彻来了替换该零件;

    
3)HTML和HTTP上之严密控制,ASP.NET
MVC会生整洁和标准相当的符,其放置的HTML辅助器方法,可以出与业内相当的出口。ASP.NET
MVC生成的页面不含其他ViewState数据,这种针对带宽的节,可以大幅度的改善用户的心得,并且可以本着浏览器与服务器之间传递的呼吁加以控制。

    
3)HTML和HTTP上之严密控制,ASP.NET
MVC会起整洁和正统相当的符号,其放置的HTML辅助器方法,可以生与标准相当的出口。ASP.NET
MVC生成的页面不含有其他ViewState数据,这种针对带宽的节,可以大幅度的改善用户的经验,并且可以本着浏览器与服务器之间传递的请加以控制。

    
4)可测试性,ASP.NET
MVC应用程序不仅可展开单元测试,还可与UI自动化测试工具良好合作。

    
4)可测试性,ASP.NET
MVC应用程序不仅可开展单元测试,还得与UI自动化测试工具良好合作。

    
5)强大的路由系统,采用REST风格的路由方案,有如下好处:

    
5)强大的路由系统,采用REST风格的路由方案,有如下好处:

    
     a、搜索引擎对URL中找到的关键词有强烈的权重,对同一的重要性词的索,极有或会见转接一个较为简单的URL地址;

    
     a、搜索引擎对URL中找到的重要词有显的权重,对平的要紧词之寻找,极有或会见转化一个较为简单的URL地址;

         
b、许多Web用户现在对URL有足的会心,并且愿意以浏览器的地方栏目中输入URL地址;

         
b、许多Web用户现在本着URL有足的领悟,并且愿意在浏览器的地址栏目中输入URL地址;

         
c、当知道URL地址的结构后,人们才会再次有或链接它,并向其他人共享;

  爱博体育app下载       
c、当了解URL地址的结构后,人们才会另行起或链接它,并于其他人共享;

         
d、此种URL结构并无见面拿应用程序的技术细节、文件夹、文件名称等组织暴露于互联网。对于底层实现好肆意修改,而不会见毁掉链接;

         
d、此种URL结构并无见面以应用程序的技术细节、文件夹、文件名称等组织暴露于互联网。对于底层实现好随心所欲修改,而无会见毁掉链接;

    
6)建立在ASP.NET平台之上,一方面ASP.NET
MVC是基于.NET平台的,因此得以活的应用任何.NET语言来修代码,可以动用大规模的.NET类库和大量之老三方.NET类库系统;另一方面,已经形成的ASP.NET平台特色,如认证、成员、角色、配置文件、国际化等可减少开支以及维护Web应用程序所需要的代码量。

    
6)建立于ASP.NET平台之上,一方面ASP.NET
MVC是基于.NET平台的,因此好灵活的应用任何.NET语言来编排代码,可以以大的.NET类库和大气底老三方.NET类库系统;另一方面,已经形成的ASP.NET平台特色,如认证、成员、角色、配置文件、国际化等可以减小支出和保护Web应用程序所要之代码量。

    
7)ASP.NET MVC是针对.NET
4.X而树立之,因此她的API可以充分利用当前语言和运作时的换代,如await关键字、扩展方法、lambda表达式、匿名、动态类型、LINQ。

    
7)ASP.NET MVC是针对.NET
4.X要是起的,因此它的API可以充分利用当前语言与运行时的创新,如await关键字、扩展方法、lambda表达式、匿名、动态类型、LINQ。

    
8)ASP.NET MVC是开源之。

    
8)ASP.NET MVC是开源之。

4、ASP.NET
MVC与ASP.NET WebForm的比较

4、ASP.NET
MVC与ASP.NET WebForm的比较

    
首先用说明的是,虽然ASP.NET MVC相对于ASP.NET
WebForm来说有一对优势,但随即并无意味着前者要代表后者,也不表示后者要破灭。

    
首先得征的凡,虽然ASP.NET MVC相对于ASP.NET
WebForm来说出一些优势,但这并无代表前者要取代后者,也未意味着后者要付诸东流。

  • WebForm的观念是,UI应该是状态化的,其结果是,在HTTP和HTML之上添加一个抽象层,用视图状态(ViewState)和回发(Postback)来创造状态化的效力。这是同一种植“拖放”式Windows
    Form风格的支付。

  • MVC采纳了HTTP真正无状态的面目。MVC框架要求用户了解Web应用程序实际的办事法,在明的前提下,进行保障与扩张,提供平等栽功能强大、简单的、整洁的、现代的方法来编排Web应用程序,摆脱复杂的限制。

  • 于是说,开发小型的,企业中间型应用程序,可以设想以WebForm的章程来贯彻,但又多之上,开发互联网应用程序或者大型的应用程序时,MVC无论从效率、兼容性、维护性都是平等种更好的选项。
  • WebForm的传统是,UI应该是状态化的,其结果是,在HTTP和HTML之上添加一个抽象层,用视图状态(ViewState)和回发(Postback)来创造状态化的功用。这是同样种植“拖放”式Windows
    Form风格的开发。

  • MVC采纳了HTTP真正无状态的本色。MVC框架要求用户了解Web应用程序实际的工作方法,在理解的前提下,进行维护及壮大,提供相同栽功能强大、简单的、整洁的、现代之不二法门来修Web应用程序,摆脱复杂的界定。

  • 之所以说,开发小型的,企业内型应用程序,可以考虑用WebForm的主意来促成,但再次多之时光,开发互联网应用程序或者大型的应用程序时,MVC无论从效率、兼容性、维护性都是同等种更好的抉择。

参考资料:《精通ASP.NET MVC X》

参考资料:《精通ASP.NET MVC X》

相关文章