跟笔者学ASP.NET MVC之一:开篇有益

摘要:

ASP.NET
MVC是微软的Web开发框架,结合了模型-视图-控制器(MVC)架构的灵光和整洁性,敏捷开发最前沿的思辨和技术,以及现存的ASP.NET平台最佳的有个别。它是价值观ASP.NET
Web Form完整的代表技术。在这一个篇小说中,作者将介绍为何微软创立了ASP.NET
MVC,他跟她前头的技术有怎么样两样。

 

ASP.NET历史

要想打听ASP.NET
MVC的历史,要求先理解ASP.NET的野史。ASP.NET在二零零零年创办。他结合了ASP.NET
WEB Form技术、ASP.NET IIS技术以及.NET技术。

透过WEB
Forms,微软通过将用户接口(UI)建立模型成一类别分级的服务器端控件对象,隐藏了HTTP(和它的无状态性)和HTML(那时候很多开发者还不熟练他)。每一种控件在HTTP请求进度中维系和笔录本身的场地,在急需的时候将自个儿表现为HTML成分,并自动连接客户端事件(例如按钮事件)和相应的服务端事件处理器代码。实际上,Web
Forms是2个安插成能在Web上发送经典事件驱动用户接口(GUI)的大的抽象层。他的想法是让Web开发感觉就像Windows
Form开发一样。开发者不须求处理一文山会海互相正视的HTTP请求和响应。他们只供给关注UI逻辑,微软无缝地将Windows桌面开发者大军传送到Web应用世界。

 

ASP.NET缺点

  • 视图状态负担:其实的在跨请求状态间的保卫安全状态机制(View
    State)导致了在客户端和服务器端之间大的多少传输。传输的多寡在非凡不难的Web中都想必高达几百KB,并且在各样请求中来回传送,导致很慢的响应时间,以及扩展了服务端的带宽需求。

  • 页不熟悉命周期:再而三客户端事件和服务端事件处理器代码的建制(一部分是页面生命周期)或许尤其复杂和小巧。很少的开发者能够得逞地处理和操纵在运行时的层级关系而不获得视图状态错误可能发现有个别事变处理器处理器执行时出乎预料地失败了。

  • 指鹿为马的诀别关怀点:ASP.NET Web
    Form代码隐藏模型提供了一种将应用代码和HTML标记分离的法子。这种分离业务逻辑和显示的办法已经受到广大地欢迎。然而,在现实上,开发者被鼓励去将展现层代码和应用层代码糅合到共同到均等的离奇的代码隐藏类。(例如,将拍卖服务端控件树和拍卖数据库的代码)。导致脆弱和难以精通的结果。

  • 有数的对HTML控制:服务端控件将本身表现为HTML,可是并不是您早晚你想要的HTML。早期的ASP.NET版本,HTML输出不能够适合Web标准,无法好的运用层叠样式表(CSS),服务端控件产生不可预料的复杂的ID属性值,使用JavaScript很难访问他们。这么些标题在前不久的Web
    Forms发行版本中改进了众多,不过依旧会获得非你预期的难处理的HTML。

  • 并发破裂的割肉医疮:Web
    Forms尝试在其余可能的时候隐藏HTML和HTTP。当你在进行客户行为时,你时不时放弃那种肤浅,逼迫你扭曲使用会发事件机制照旧选择古板的法子让他产生你想要的HTML。那时候,全数的WEB
    Forms抽象都改成了Web开发者们令人寒心的阻止。

  • 低测试性:Web
    Forms设计者们从不预料到自动化测试会成为软件开发进度中二个首要的组件。不出意料的,他们设计的严密的耦合架构是不适合单元测试的。集成测试也1如既往被挑战。

Web
Forms不是都以倒霉,微软一度在增加他的灵活性上付出了不少奋力,简化开发流程,甚至从ASP.NET
MVC中拿了有个别特点。当您须求神速支付的时候(2个针锋绝对不怎么复杂的web
app1天能开发达成的时候)Web
Form更胜一筹。不过唯有你在付出的时候相当密切,不然你将发现你创建的应用程序卓殊不便测试和珍贵。

 

ASP.NET MVC主要优点

在2006年4月,微软发表了三个新的MVC开发平台,建造在ASP.NET宗旨平台之上,清楚地规划成适应革新技术(例如Rails)以及Web
Form批评者们的直白响应。上边部分讲述新的阳台怎么样胜过Web
Forms的以及怎么样将ASP.NET技术重新带到了一代边沿。

分别MVC架构形式和ASP.NET
MVC框架比较首要。MVC方式不是新东西-往回到一9七陆年在Xerox
PARubiconC的Smalltalk工程-可是前日看作三个格局,他收获了Web应用的高大的迎接。有上边多少个原因:

 

  • MVC架构

用户跟MVC应用交互遵照自然的循环:用户发生二个作为,作为响应系统改变它的数据模型,发送更新后的视图给用户。然后再度循环。那对发出1多种的HTTP请求和接收响应的Web应用尤其便宜。

Web应用迫使组合一些技艺(例如:数据库,HTML和施行代码),将他们分手到区别的层中。从构成这几个层的历程中发出的方式自然地映射成了MVC概念。ASP.NET框架实现了MVC方式,在贯彻进程中,革新了关怀点的分开。事实上,ASP.NET
MVC达成了MVC格局杰出一些的始末,特别契合Web应用。

 

  • 可扩张性

MVC框架建造于1雨后春笋的并行独立的基于.NET接口的机件上,并根据抽象基类。你能够格外简单地更迭组件,例如用不一样的你协调实施的零部件替换路由系统、视图引擎和控制器工厂。大约来说,MVC框架给您多少个接纳:

  1. 应用私下认可标准的零件(对大多数行使来说丰硕了)
  2. 运用继承类替换暗许的机件行为
  3. 动用新的基于接口和抽象类的零部件替换私下认可组件

 

严密地控制HTML和HTTP

ASP.NET发生干净,标准的标志HTML。基于HTML协理类格局爆发符合标准的出口,但是有三个针锋绝对于Web
Forms更享有历史学意义上的改变。不是发生一片你不能够控制的HTML,MVC框架鼓励你手工写不难优雅的用CSS装饰的标志。

理所当然了,假使你不想扔掉壹部分现成的复杂性的UI成分小部件,例如日期控件也许层级菜单,ASP.NET
MVC很不难采纳最好的UI框架例如jQuery UI也许Bootstrap CSS框架。

ASP.NET MVC 发生的页面不分包其余视图状态数据,由此他们比ASP.NET
WEB发生的页面更加小。

ASP.NET
MVC与HTTP无缝工作。你能够操纵在浏览器和服务端之间传递的呼吁,因而你能够不择手段细微地控制你的用户体验。AJAX变得很简单,未有了别的活动的从客户端到服务器端接口的回传。

可测试性

 MVC框架结构让你的应用程序开始有可维护性和可测试性,因为您本来地分离了分裂的应用程序关心点。但是,ASP.NET设计者们并不曾停留在那边。为了协助单元测试,他们使得框架设计成为以组件为对象的设计,确认保障种种分开的壹部分都能够服务单元测试和Mocking工具的急需。

可测试性不只是单元测试。ASP.NET
MVC应用程序也得以很好的和UI自动化测试1起干活。你可以写测试脚本模仿用户操作而不用去担心操作的是哪三个HTML成分、CSS类恐怕框架发生的ID,而且你不要顾虑页面HTML结构无预期的浮动。

 

强有力的路由机制

趁着Web应用技术的创新。URAV四L样式也发出了转变。像这么的UHavalL: 

/App_v2/User/Page.aspx?action=show%20prop&prop_id=82742

变得越来越少了。被替换到四个更简单干净的上面的格式:
/to-rent/chicago/2303-silver-street

有局地好的关切U凯雷德Ls结构的来头。首先,搜索引擎更重视在UQashqaiL上找到的基本点字。搜索”rent
in
Chicago”更易于现身在搜寻中。其次,许多Web用户未来丰富明白U瑞鹰L,可以直接在地点烂输入U兰德酷路泽L。第一,当芸芸众生开头知道UTiggoL结构后,他们更有希望链接他,跟朋友分享它,甚至在机子里高声的读它。第5,他并未曝光你的应用程序的技术细节、文件夹和文书名。

根本的U普拉多Ls在在此从前的框架中很难推行,可是ASP.NET
MVC使用二个号称U翼虎L路由的性情来提供暗中同意的干净U冠道Ls。那让你能够决定你的UMuranoL情势,以及跟你利用之间的关系。让你随便地创制有含义对用户有用的U奥迪Q伍Ls的方式,而不用服从于叁个定义好的方式。当然,那意味你能够简单地定义1个你愿意的时尚的REST样式的U翼虎L样式。

 

建筑于ASP.NET平台最棒的一对

微软现存的ASP.NET平台提供了贰个长算远略的、经过验证的组件集合,适合开发有效高效的的Web应用连串。

先是最鲜明的,因为ASP.NET
MVC是基于.NET平台的,你能够应用任何.NET语言访问同一的API性子-不仅是MVC本身,.NET扩大类框架和宽广的第一方.NET框架生态圈也同等。
其次,已经办好的ASP.NET平台湾特务色-例如验证、成员身份、剧中人物、Profile和国际化-可以减弱你在支付和保卫安全WEB系统时的代码,并且那个特点在MVC框架里和在经典WEB
Form工程里平等有效。ASP.NET平台底层为MVC框架提供了WEB开发丰盛的工具集合。

 

ASP.NET MVC是开源的
不像从前的微软Web开发平台,你能够肆意地下载ASP.NET
MVC源代码,甚至修改和编写翻译你协调的版本。

 

相关文章