《精通 ASP.NET MVC 5》----1.3 ASP.NET MVC的关键优点

1.3 ASP.NET MVC的关键优点

2007年10月,微软公司发布了一款新的MVC Web开发平台。它建立在核心ASP.NET平台之上,明确地形成了对Rails这类技术进展的直接响应,并作为对Web Form批评的一种反应。下面几小节将描述这一新平台如何克服Web Form的局限性,并将ASP.NET重新带回到先进行列。

1.3.1 MVC的体系结构

重要的是区别MVC体系结构模式与ASP.NET MVC框架。MVC模式并不新——这要回溯到1978年Xerox PARC的Smalltalk项目——但它作为一种Web应用程序的模式,如今已得到了广泛的普及,原因如下。

用户与MVC应用程序的交互遵循一种自然的循环。用户执行一个动作,在响应过程中,应用程序修改其数据模型,并将一个更新的视图交给该用户,然后重复这一循环。这十分适合于以一系列HTTP请求与响应进行交付的Web应用程序。
Web应用程序必须组合多种技术(如数据库、HTML、可执行代码等),这通常被分成一系列层次。这种组合所产生的设计模式能够自然地映射到MVC的概念上。
ASP.NET MVC框架实现了这种MVC模式,而且在实现过程中,还极大地改善了关注分离。事实上,ASP.NET MVC实现了MVC模式的现代化变异,使它特别适用于Web应用程序。你将在第3章中更多地了解这种体系架构的理论与做法。

通过采纳和调整MVC模式,ASP.NET MVC框架对Roby on Rails以及类似平台,形成了强有力的竞争,并将MVC模式带到了.NET世界的主流行例。借助于开发人员使用其他平台所获得的经验和最佳实践,ASP.NET MVC在许多方面的推进,甚至已经超越了Rails。

1.3.2 可扩展性

MVC框架被构建成一系列独立的组件,这些组件满足一个.NET接口,或建立在一个抽象类之上。你可以很容易地用一个自己的不同实现来替换这些组件,例如,路由系统、视图引擎、控制器工厂等。通常,MVC框架对每一个组件提供了3种选择。

使用组件现行的默认实现(它应该足以满足大多数应用程序)。
派生默认实现的一个子类,以调整其行为。
用接口或抽象基类的一个新的实现来完全替换该组件。
从第14章开始,你将学习各种组件,以及如何和为什么要调整或替换这些组件。

1.3.3 HTML和HTTP上的严密控制

ASP.NET MVC会产生整洁与标准兼容的标记。其内置的HTML辅助器方法,可以产生与标准兼容的输出,但与Web Form相比,还有一种更重要的理念上的变革。MVC框架鼓励你制作可设置CSS样式的简单、优雅的标记,而不是让难以控制的HTML泛滥成灾。

当然,如果你确实想使用日期选择器或级联菜单等复杂UI元素的现成部件,ASP.NET MVC的“无特殊需求”标记方法可以很容易地使用最佳类型的UI库,如jQuery UI库或Bootstrap CSS库等。ASP.NET MVC与jQuery啮合得很好,微软公司已经在Visual Studio中随带了jQuery,将其用作默认ASP.NET MVC项目模板的一个内置部件,而且附带了Bootstrap、Knockout以及Modernizr等流行库。

提示:
本书不会介入这些值得赞美的JavaScript库的细节,因为它们不属于核心的MVC框架,而且都是在浏览器中完成其工作的。然而,MVC框架应用程序的客户端开发是一个重要论题,你可以在笔者的Pro ASP.NET MVC 5 Client一书中了解到更多内容,该书由Apress于2014年出版。不过,还有一些库对验证和Ajax请求等核心特性提供了支持,将在本书的第2部分加以描述。第27章描述Knockout,整本书中都会使用Bootstrap(虽然没有做详细介绍)。

ASP.NET MVC生成的页面不含任何View State(视图状态)数据,因此,这些页面可能比典型的ASP.NET Web Form页面更小些。无论当今的网络连接速度如何,这种对带宽的节约,仍然会极大地改善最终用户的体验,并且有助于降低公用Web应用程序的运行费用。

ASP.NET MVC与HTTP工作十分协调。你可以对浏览器和服务器之间传递的请求加以控制,因此,可以按自己的意愿仔细地调整用户的体验。AJAX很容易使用,而且没有任何自动回发扰乱客户端的状态。

1.3.4 可测试性

MVC体系结构在应用程序的可维护性和可测试性方面,提供了良好的开端,因为你可以很自然地将应用程序的不同关注分离成一个个独立的片段。ASP.NET MVC的设计者还不止做了这些。为了支持单元测试,他们对该框架采取了面向组件的设计,并确保所构造的每一个独立的片段,都满足单元测试和模仿工具的需求。他们还增加了Visual Studio向导,以便你根据需求创建单元测试项目。这种测试项目能与开源的单元测试工具(如NUnit和xUnit等),也能与包含在Visual Studio中的测试工具集成在一起,这些将在第6章加以介绍。即使从未编写过单元测试,也会有一个很好的开始。

在本书中将会看到如何为ASP.NET MVC的控制器以及动作编写整洁、简单的单元测试示例。为了模拟各种场景,这些示例将使用各种测试和模仿策略,以支持框架组件的伪造或模仿实现。

可测试性并不仅仅是指单元测试,ASP.NET MVC应用程序也可以与UI自动化测试工具良好协作。你可以编写模拟用户交互的脚本,而不必猜测框架会生成什么样的HTML元素结构、什么样的CSS的class,或什么样的ID等,也不必担忧结构的意外变化。

1.3.5 强大的路由系统

随着Web应用程序技术的改进,URL的样式也已经发生了演变。像下面这样的URL:

/App_v2/User/Page.aspx?action=show%20prop&prop_id=82742
已经明显很少见到了。取而代之的是一种更简单、更清晰的格式,如下所示。

/to-rent/chicago/2303-silver-street
采用这种URL结构有一些很好的理由:第一,搜索引擎对URL中找到的关键词有明显的权重,一条“rent in Chicago(芝加哥租房)”的搜索,极有可能会转向一个较为简单的URL;第二,许多Web用户现在对URL有了足够的领悟,并且乐于直接在浏览器的地址栏中输入;第三,当理解URL的结构后,人们才会更有可能链接它,与朋友共享它;第四,这种URL并不会将应用程序的技术细节、文件夹、文件名称等结构暴露给公用网,因此,你可以自由地修改底层实现,而不会破坏输入链接。

整洁的URL在早期的框架中难以实现,但ASP.NET MVC使用一种叫作URL路由的特性,以提供默认的整洁路由。这让你能够完全控制URL方案及其与应用程序的关系,使你能自由地创建对用户有意义和有用的URL模式,而无须遵守预定义模式。当然,这也意味着如果你愿意,可以很容易地定义现代REST风格的URL方案。第15章和第16章可以找到URL路由的完整描述。

1.3.6 建立在ASP.NET平台的精华之上

微软公司当前的ASP.NET平台为开发高效的Web应用程序,提供了一系列成熟的、经充分验证的组件和工具集。首先,最明显的,由于ASP.NET MVC是基于.NET平台的,因此可以灵活地使用任何.NET语言来编写代码,并访问同样的API特性——不仅仅是MVC本身的特性,而且是广泛的.NET类库和大量的第三方.NET类库体系。其次,已经形成的ASP.NET平台特性(如认证(Authentication)、成员(Membership)、角色(Roles)、配置文件(Profiles),以及国际化(Internationalization)等)可以减少你开发和维护Web应用程序所需的代码量。而且,这些特性在MVC框架中的使用,与在经典的Web Form项目中的使用同样有效。底层的ASP.NET平台提供了一套丰富的工具,可用于构建MVC框架的Web应用程序。

注:
本书中描述了许多最常用的ASP.NET平台特性,因为它们与MVC开发有关,但.NET平台有其自己的论题。ASP.NET平台提供的丰富的完整特性,可参考笔者的Pro ASP.NET MVC 5 Platform一书,该书由Apress于2014年出版。

1.3.7 现代API

微软公司的.NET平台随每次重要发布都在不断演变,支持,甚至定义了现代编程最先进的方向。ASP.NET MVC 5建立在.NET 4.5.1之上,因此,它的API可以充分利用当前语言和运行时的创新,包括await关键字、扩展方法、lambda表达式、匿名和动态类型,以及语言集成查询(LINQ)等。许多MVC框架的API方法和编码模式与早期平台相比,遵循了一种更整洁、更富表现力的写作方式。如果尚未跟上最新的C#语言特性,不用担心——第4章将提供MVC开发最重要的C#特性概要。

1.3.8 ASP.NET MVC是开源的

与之前的微软Web开发平台不同,现在可以自由地下载ASP.NET MVC的源代码,甚至修改和编译自己的版本。当你的调试跟踪已深入到系统组件并希望步入其代码内部(甚至阅读原程序员的注释)时,这种开源是无价的。如果你是在创建高级组件并希望了解进一步开发的可能性,或是想了解内置组件的工作机制等情况时,这种开源也是很有用的。

此外,如果你不喜欢框架的某些工作方式或发现了一个bug,甚至想访问一些不能访问的东西,这种开源简直太好了,因为你可以自己做一些简单修改。然而,你需要对这些修改保持跟踪,并且在更新到框架的新版本时,把它们重新运用起来。ASP.NET MVC开源工作在“微软公共许可(Microsoft Public License,Ms-PL)”之下(www.opensource.org/licenses/ms-pl.html),这是一个“开放源代码倡议(Open Source Initiative,OSI)”核准的开源许可协议。意即,你可以修改源代码、部署它,甚至公开地将你的修改作为派生项目重新分发。MVC源代码可以从http://aspnet.codeplex.com/下载。

时间: 2024-09-12 14:11:54

《精通 ASP.NET MVC 5》----1.3 ASP.NET MVC的关键优点的相关文章

《精通 ASP.NET MVC 4》----1.3 ASP.NET MVC的关键优点

1.3 ASP.NET MVC的关键优点 精通 ASP.NET MVC 4 ASP.NET已经获得了巨大的商业成功,但正如所讨论的,其他Web开发领域也在进步,即使是微软也在不断清理Web Form的垢病,因为其基本设计看上去已经相当陈旧了. 2007年10月,在德克萨斯-奥斯汀举行的第一次ALT.NET国际会议上,微软副总裁ScottGuthrie宣布并演示了崭新的MVC Web开发平台,它建立在核心ASP.NET平台之上,明确地作出对Rails等技术进展的直接回应,以及对Web Form批评

主攻ASP.NET MVC4.0之重生:ASP.NET MVC使用JSONP

原文:主攻ASP.NET MVC4.0之重生:ASP.NET MVC使用JSONP 原文地址 http://www.codeguru.com/csharp/.net/net_asp/using-jsonp-in-asp.net-mvc.htm 1.创建JsonpController public class JsonpController : Controller { // GET: /Jsonp/ VoteUserRepository userrepository = new VoteUser

ASP.NET MVC 1.1 _VS2010 & ASP.NET MVC 2 新特性

ASP.NET MVC 1.1 on Visual Studio 2010 Beta1 由于 VS2010 Beta的发布,所以ASP.NET MVC在Codeplex上发布了一个专门为其准备的ASP.NET MVC版本: http://aspnet.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=28527   关于ASP.NET MVC 2.0   另外在ASP.NET MVC Roadmap 中提到了关于ASP.NET MVC 2.0

七天学会ASP.NET MVC (一)——深入理解ASP.NET MVC

系列文章 七天学会ASP.NET MVC (一)--深入理解ASP.NET MVC 七天学会ASP.NET MVC (二)--ASP.NET MVC 数据传递 七天学会ASP.NET MVC (三)--ASP.Net MVC 数据处理 七天学会ASP.NET MVC (四)--用户授权认证问题 七天学会ASP.NET MVC (五)--Layout页面使用和用户角色管理  七天学会ASP.NET MVC (六)--线程问题.异常处理.自定义URL 七天学会ASP.NET MVC(七)--创建单页

《ASP.NET 开发从入门到精通》----2.3 编译和部署ASP.NET程序

2.3 编译和部署ASP.NET程序 知识点讲解:光盘:视频\PPT讲解(知识点)\第2章\编译和部署ASP.NET程序.avi 当一个ASP.NET项目程序设计完毕后,需要运行才能浏览执行效果,效果满意后可以通过部署将网站发布到网络中. 2.3.1 编译.运行ASP.NET程序 通过使用Visual Studio 2012的菜单命令可以对ASP.NET的代码进行编译和运行.具体方法是依次单击菜单栏中的[生成]︱[重新生成网站]命令,如图2-40所示:也可以在"解决方案资源管理器"中右

预防ASP网站被黑 彻底了解ASP木马

鉴于大部分网站入侵都是利用asp木马完成的,特写此文章以使普通虚拟主机用户能更好地了解.防范asp木马.也只有空间商和虚拟主机用户共同做好防范措施才可以有效防范asp木马! 一.什么是asp木马? 它其实就是用asp编写的网站程序,甚至有些asp木马就是由asp网站管理程序修改而来的. 它和其他asp程序没有本质区别,只要是能运行asp的空间就能运行它,这种性质使得asp木马非常不易被发觉.它和其他asp程序的区别只在于asp木马是入侵者上传到目标空间,并帮助入侵者控制目标空间的asp程序.要想

ASP+中文教程(一)--asp+简介、安装、以及如何显示中文

asp+|教程|显示|中文 ASP+ 中文教程-----asp+简介.安装.以及如何显示中文 终于空下一段时间,可以学一些新东西,看了一下有关asp+的相关资料,觉得很值得学一下,所以就一边学习一边写下这个教程,对于自己来说,可以作为学习笔记,对于别人,尤其是那些E文不太好的朋友可以作为一个可看的中文资料吧,起个抛砖引玉的作用.由于水平所限,错误在所难免,希望大家能批评指正.首先我将讲一下什么是asp+ , 然后我会结合NGWS自带的例子具体讲一下asp+的应用.由于平常用C较多,所以所有例子都

asp+中文教程(二)-- Asp+ Web Forms

asp+|web|教程|中文 二.ASP + Web Forms ASP + Web Forms ,一个微软的新名词,照它自己的话说,ASP + Web Forms页面框架是一个可升级的NGWS runtime编程模型,可以在服务器上动态产生网页.不太好懂是吗,其实说白了,和HTML的表单一样,但它可以在服务器端动态改变,而不象静态HTML表单那样一旦生成就无法改变,当然,用DHTML或remote script也可以做到动态改变,但毕竟不是很方便.那么,究竟Web Forms是个什么样呢?其实

菜鸟学习ASP基础之了解什么是asp

一.什么是ASP? 从字面上说,ASP包含三方面含义: 1.Active:ASP使用了Microsoft的ActiveX技术.ActiveX(COM)技术是现在Microsoft软件的重要基础.它采用封装对象,程序调用对象的技术,简化编程,加强程序间合作.ASP本身封装了一些基本组件和常用组件,有很多公司也开发了很多实用组件.只要你可以在服务器上安装这些组件,通过访问组件,你就可以快速.简易地建立自己的WEB应用. 2.Server:ASP运行在服务器端.这样就不必担心浏览器是否支持ASP所使用