REST是根据代表真实世界实体的资源(URI)和象征以这些资源达成可用的标准操作方法(HTTP方法)来讲述一个应用程序。REST是依据代表真实世界实体的资源(URI)和象征于这些资源及可用之业内操作方法(HTTP方法)来叙述一个应用程序。

     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》