这种重组就是REST

     ASP.NET
MVC是微软集团的壹款WEB开垦框架,整合了“模型-视图-调控器”架构的短平快与清洁,是火速开荒最今世的思量与技术。它是观念ASP.NET
WebForm的一个完美的替代品。

1、当今的Web开发

    
一)REST(Representational State
Transfer)已经成为应用程序在HTTP上互操作的第一类别架构,完全使SOAP失色。REST是依赖代表真实世界实体的财富(UENCOREI)和代表在那一个财富上可用的科班操作方法(HTTP方法)来说述一个应用程序。经过HTTP方法与能源地址的结缘就能够对财富施行相应的操作,这种重组正是REST,实践这种操作的呼吁也叫做REST化的伸手。(对于REST的通晓个人依然不深透,前边会对此概念举行填空)

当前的Web应用程序不只是提供HTML服务,平日也必要将XML或JSON数据提供给用户,而WebForm很难支撑。

    
2)整个软件行业向着敏捷与测试驱动开采方向的腾飞,如单元测试工具(NUnit、xUnit)、模仿框架(Moq、Rhino、Mocks)、调控反转容器(Ninject、AutoFac)、持续集成服务器(CruiseControl、TeamCity)、对象关系映射器(NHibernate、Subsonic、EF、Dapper、Petapoco)、UI自动化学工业具的提供。(测试驱动开辟TDD思想:首先描述想要获得的行为楷模,称为测试标准;然后进行软件设计,那样经过施行依据于这平素彻的1套测试,来验证应用程序的牢固性和不错

    
叁)顺应Web标准和REST化的大方向。

贰、ASP.NET WebForm的野史与难点

    
ASP.NET WebForm的才能仓库,如下图所示:

    
图片 1

    
此图的含义是WebForm组建在ASP.NET之上,而ASP.NET又成立在.NET平台之上,MVC框架所起的效劳是顶替WebForm。

    
WebForm的计划思想是,让Web开拓在以为到上与Windows
Form开采相同。开荒者不再须要以一名目诸多独立的HTTP请求与响应进行职业,能够感到它是壹种状态化的UI,大家可以淡忘WEB及其无状态本质,转而用①种“拖–放”式设计器来创设UI,并设想全数专门的学业都产生在服务器上。

    
趁着时间的延迟,WebForm在实质上项目中冒出了有的缺陷:

    
1)视图状态重负:维护状态的实际上机制,也正是ViewState(视图状态)导致在客户端与服务器之间传输大块数据(达到几百KB),而且来回于每一次请求之间,导致响应时间异常的慢,扩大了服务器的带宽必要;

    
贰)页面生命周期:连接客户端与劳务器端事件管理器代码的体制很复杂,对于应用程序运转时期很难张开保险;

    
叁)关心分离的荒谬思想:本身将代码从HTML提抽取来,放到后台代码类中张开始拍戏卖是很1种很好的艺术,但是有个别开辟者在后台代码中校显示代码与应用职业逻辑混合在联合,导致最后代码混乱并难以维护;

    
四)HTML的受限调节:服务器控件将本身渲染成HTML,但并不是所期待观察的HTML,在ASP.NET
四此前,并不可能很好的选取CSS。同一时间会生成不可预见或复杂的ID,那样JavaScript就很难张开走访。

    
5)有瑕疵的抽象:WebForm试图尽量隐去HTML和HTTP(那是因此WebForm的画饼充饥层达成的)。当你兑现协和的措施时,供给扬弃这种肤浅,迫使接纳回发事件机制的逆向工程。所以这种肤浅对于开拓者来说就组成1个大幅的拦Land Rover和挑衅;

    
陆)低可测试性:WebForm的这种紧耦合种类布局并不吻合于单元测试,对于集成测试也很具备挑衅性;

3、ASP.NET
MVC的特点

    
一)ASP.NET
MVC框架完成了MVC方式(MVC格局在一九七陆年就已经提议来了),由于ASP.NET
MVC相当的大的修正了关注分离,所以特地适用于Web应用程序。因为与MVC应用程序的互动服从着用户动作与视图更替的当然周期,在这几个周期中,要是视图是无状态的。那与协助Web应用程序的HTTP请求与响应措施要命契合。

    
二)可扩张性,MVC框架被营形成1体系独立的零件,如路由系统、视图引擎、调控器工厂,你可以很容易地用贰个谈得来的两样完成来替换那些零件,平常有二种选用:

         
a、使用组件现行反革命的暗许实现,此种可以满意大许多应用程序;

         
b、派生暗中认可实现的贰个子类,以调治其行为;

         
c、用接口只怕抽象基类的贰个新的兑现来完全替换该零件;

    
三)HTML和HTTP上的严密调整,ASP.NET
MVC会发生整洁与正式格外的暗记,其内置的HTML辅助器方法,可以发生与规范非常的出口。ASP.NET
MVC生成的页面不含有其余ViewState数据,这种对带宽的节约,能够大幅的精耕细作用户的感受,并且能够对浏览器与服务器之间传递的请求加以调节。

    
肆)可测试性,ASP.NET
MVC应用程序不仅仅能够开始展览单元测试,还是能与UI自动化测试工具出色合营。

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

    
     a、找出引擎对UPRADOL中找到的要紧词有鲜明的权重,对同样的要紧词的查究,极有望会转化贰个较为轻易的U中华VL地址;

         
b、多数Web用户未来对U大切诺基L有丰盛的会心,并且愿意在浏览器的地址栏目中输入UQX56L地址;

         
c、当精晓U大切诺基L地址的协会后,人们才会更有相当大可能率链接它,并向其余人共享;

         
d、此种U奥迪Q三L结构并不会将应用程序的本事细节、文件夹、文件名称等结构暴光给互连网。对于底层完结能够随心所欲修改,而不会破坏链接;

    
陆)建构在ASP.NET平台之上,一方面ASP.NET
MVC是基于.NET平台的,因而得以灵活的行使任何.NET语言来编排代码,能够动用大规模的.NET类库和多量的第一方.NET类库连串;另一方面,已经变成的ASP.NET平台湾特务色,如认证、成员、剧中人物、配置文件、国际化等得以减去支出和保证Web应用程序所急需的代码量。

    
七)ASP.NET MVC是针对.NET
四.X而树立的,因而它的API能够充足利用当前语言和平运动作时的立异,如await关键字、扩张方法、lambda表明式、无名、动态类型、LINQ。

    
8)ASP.NET MVC是开源的。

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

    
首先必要验证的是,即便ASP.NET MVC相对于ASP.NET
WebForm来讲有一对优势,但那并不意味前者要替代后者,也不表示后者要消灭。

  • WebForm的历史观是,UI应该是状态化的,其结果是,在HTTP和HTML之上增加一个抽象层,用视图状态(ViewState)和回发(Postback)来创造状态化的职能。那是壹种“拖放”式Windows
    Form风格的支出。

  • MVC采用了HTTP真正无状态的泰山真面目。MVC框架必要用户知道Web应用程序实际的行事方法,在明亮的前提下,举行爱抚和强大,提供1种功用强大、轻巧的、整洁的、当代的法子来编排Web应用程序,摆脱复杂的范围。

  • 于是说,开拓Mini的,集团内部型应用程序,能够想念选择WebForm的不二法门来达成,但越来越多的时候,开采网络应用程序或许大型的应用程序时,MVC无论从效用、包容性、维护性都是一种越来越好的接纳。

参谋资料:《明白ASP.NET MVC X》

相关文章