新萄京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》

发表评论

电子邮件地址不会被公开。 必填项已用*标注