亚洲必赢手机ASP.NET MVC与ASP.NET WebFormASP.NET MVC与ASP.NET WebForm

by admin on 2018年10月6日

     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》

发表评论

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

网站地图xml地图