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之技巧堆栈,如下图所示:

    
图片 1

    
图片 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地址之构造后,人们才见面更起或链接它,并通往其他人共享;

         
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》

相关文章