通过HTTP方法与资源地址的三结合就足以对资源执行相应的操作,这种结合就是REST

     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》