《精通 ASP.NET MVC 4》----1.2 当今的Web开发

1.2 当今的Web开发

精通 ASP.NET MVC 4
除微软之外,自Web Form首次发布以来,Web开发技术发展迅速,这表现在几个不同的方向。除了Ajax之外,还有一些其他的主要发展。

1.2.1 Web标准与REST

近年来,向Web标准兼容的趋势已在增强。Web网站建立在比以往更广泛的设备和浏览器之上,Web标准(HTML、CSS、JavaScript等)使人们有望在任何地方——甚至在可联网的冰箱上——都可以有相当好的浏览体验。现代Web平台不能忽视这种商业环境和开发者对遵从Web标准的追求。

HTML5正在进入主流运用,它给Web开发人员提供了丰富的功能,这让客户端能够执行一些以前要由服务器独自负责的工作。这些新功能以及日趋成熟的JavaScript库,例如jQuery、jQuery UI和jQueryMobile等,意味着标准已经变得更为重要,并且是更为丰富的Web应用程序的重要基础。

注:本书简要讨论HTML5、jQuery及其相关技术,并不打算深入,因为它们都是有自身内含的主题。如果要完整了解,可以看看Apress出版的几本Adam的书:Pro jQuery(《精通jQuery》)、Pro JavaScript for Web Apps(《精通用于Web应用程序的JavaScript》),以及The Definitive Guide to HTML5(《HTML 5权威指南》)。
与此同时,表现式状态传输(Representational State Transfer,REST)已经成为应用程序在HTTP上互操作的主要体系架构,完全使SOAP(ASP.NET原先进行Web服务的支撑技术)黯然失色。REST根据表示真实世界实体的资源(URI)和表示在这些资源上可用的标准操作(HTTP方法)来描述一个应用程序。例如,用户可能会PUT(传递)一个新的http://www.example.com/Products/Lawnmower (含义为更新一台除草机——译者注),或DELETE(删除)http://www.example.com/Customers/Arnold-Smith (删除某客户)。(这两个例子的含义为,通过HTTP方法与资源地址的组合就可以对资源执行相应的操作,而这种HTTP方法与资源地址的组合就是REST,执行这种操作的请求也称为REST化的请求——译者注)

当今的Web应用程序不只服务于HTML,通常也必须把JSON或XML数据提供给各种客户端技术,包括AJAX、Silverlight以及本地智能手机等应用程序。利用REST,做这些事情会很自然。REST消除了之前Web服务与Web应用程序之间的差异,但这需要一种对HTTP和URL进行处理的办法,而这种办法却难以得到ASP.NET Web Form的支持。

1.2.2 敏捷与测试驱动开发

在过去的十多年中,不只Web开发得到了发展,整个软件开发行业也朝着敏捷方法学的方向转移。这可能包含许多不同的事情,但主要是指将软件项目的实施视为一种适应性的探索过程,以消除超前规划的阻碍和限制。敏捷方法学热衷于将一组特定的开发实践与促进和辅助这些实践的工具(通常是开源的)协同推进。

测试驱动开发(TDD,Test-Driven Development)及其最新的化身——行为驱动开发(BDD,Behavior-Driven Development),是两个突出的例子。其思想是,通过描述想要得到的行为范例(称为测试或规范)来设计软件,因此,任何时候都可以执行依附于这一实现的一套规范来验证应用程序的稳定性和正确性(在TDD/BDD开发中,软件是根据测试规范而实现的。于是,这套测试便可以随时用来验证软件这一实现——译者注)。.NET支持TDD/BDD的工具并不缺乏,但它们几乎都不能与Web Form很好地工作。

单元测试工具(Unit Testing Tools):可以规定个别类或其他孤立的小型代码单元的行为。只有将软件设计成一个个独立的模块,才能有效地运用这些工具,以使得每个测试可以独立地运行。遗憾的是,Web Form应用程序很少能够以这种方式进行测试。根据(Web Form的)框架指南,要把逻辑放到事件处理程序中,乃至使用直接查询数据库的服务器控件,开发者往往需要将应用程序逻辑与Web Form的运行时环境紧紧地耦合在一起。这是不能进行单元测试的死结。

UI自动化工具(UI Automation Tools):能够根据应用程序的一个完整的运行实例来模拟一系列用户交互。理论上,这些工具可以用于Web Form,但当页面布局被微小改动时,它们都可能会崩溃。稍有差错,Web Form就会生成完全不同的HTML结构和元素的ID值,导致正在使用的测试套件失效。

.NET开源和独立的软件供应商(ISV,Independent Software Vendor)团体已经生产了无数顶级质量的单元测试框架(NUnit、xUnit)、模仿框架(Moq、Rhino Mocks)、控制反转容器(Ninject、AutoFac)、持续集成服务器(Cruise Control、TeamCity)、对象关系映射工具(NHibemate、Subsonic)等。这些工具和技术的支持者们都已达成一致意见,在共享品牌ALT.NET下发布并组织会议。传统的ASP.NET Web Form因其单片式设计(指用户界面及其后台处理逻辑被耦合在一起的设计方式——译者注),而不适用于这些工具和技术。因此,Web Form未能得到专家组和行业思想领导者们起码的尊重。

1.2.3 Ruby on Rails

2004年,默默无闻的Ruby on Rails只是一个无名倡导者的开源项目。突然有一天,Ruby on Rails声名鹊起,开始转变Web 开发的规则。并不是因为它包含了革命性的技术,而在于其概念利用了已有要素,并把它们以一种有说服力且吸引人的方式融合在一起,而使现有平台相形见绌。

Ruby on Rails(或通常所说的Rails)采纳了MVC架构(马上对此进行描述),通过运用MVC架构并遵循(而不是违背)HTTP协议,提倡约定优于配置,并将“对象—关系”映射(ORM,Object-Relational Mapping)工具集成到它的内核,Rails应用程序几乎无需太多努力就可以建成。就好像Web开发一直以来就应该是这样,好像人们突然意识到,这些年来一直在进行工具奋战(在努力制作一些其实不需要的工具——译者注),而现在,这一切都结束了。

Rails表明,顺应Web标准和REST化并不困难。它也表明,当框架支持敏捷开发与TDD时,它们工作起来是最好的。从那时起,整个Web开发世界都被调动起来了。

1.2.4 Sinatra

感谢Rails,很快有很多Web开发者以Ruby作为他们的主要编程语言。但在当今这样一个有强烈创新意识的社会中,出现Rails的替代品只是时间问题。2007年,最著名的Sinatra问世了。

Sinatra摒弃了几乎所有标准的Rails风格的底层架构(路由、控制器、视图等),而仅仅把URL模式映射到Ruby代码块。访问者请求一个URL,这会引起执行一个Ruby代码块,并把数据回送给浏览器——这就够了。这是Web开发的一种难以置信的简单形式,但Sinatra只在两个主要领域找到了利基(利基,Niche,一种小范围但很有作为的环境——译者注)。首先,对于那些建立REST化的Web服务,它恰好能够快速完成工作(第25章会简单涉及REST)。其次,由于Sinatra可以连接广泛的开源HTML模板和ORM技术,通常以此为基础来装配一个自定义的Web框架,以适应手头各种项目的体系架构需求。

Sinatra尚未在Rails(或ASP.NET MVC)等全堆栈MVC平台中占据重要的市场份额。这里简单地提到它,只是想说明Web开发行业正在朝着简化的方向发展,也因为Sinatra起到对抗其他框架(甚至聚集了更核心的特性)的作用。

1.2.5 Node.js

Web开发另一个明显的趋势是朝着以JavaScript作为主要编程语言的方向发展。AJAX首先展示了JavaScript是重要的,jQuery展示了它的功能强大而雅致,而Google的开源V8 JavaScript引擎则展示了它难以置信的快速。如今,JavaScript正在成为一种重要的服务器端编程语言。它为一些非关系型数据库,包括CouchDB和Mongo等,提供数据存储和查询语言服务,并被用作服务器端平台的一种多用途语言,如Node.js。

Node.js于2009年出现,并很快得到了广泛认可。从体系结构上看,它类似于Sinatra,因为它不采用MVC模式,而是以更低级的方式把HTTP请求连接到代码。其关键创新如下所示。

使用JavaScript:开发者于是只需要使用一种语言,从客户端代码到服务器端逻辑,甚至对CouchDB或之类的数据查询逻辑。

完全异步:在等待输入/输出(I/O)或任何其他操作时,Node.js的API根本不会显露出任何形式的线程阻塞。通过启动其操作,然后在该I/O完成时接收一个回调便实现一个完整的I/O操作。这意味着,Node.js形成了非常有效的系统资源利用,使得每CPU可能处理数以万计的并发请求(其他平台只能期望把每CPU的并发请求限制在100左右)。

同Sinatra一样,Node.js是一种利基技术。在有时间限制的情况下,建立实际应用程序的大多数事务,一般都需要用到诸如Ruby on Rails、ASP.NET MVC等全技术堆栈框架下的所有底层架构。这里提到的Node.js,只是把ASP.NET MVC的某些设计放在行业趋势的大背景下讨论。例如,ASP.NET MVC包含了异步控制器(将在第17章进行介绍),这就是一种以非阻塞I/O处理HTTP请求,并提高CPU处理更多请求的方式。正如读者将要了解到的,ASP.NET MVC很好地集成了运行在浏览器端的成熟的JavaScript代码。

本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。

时间: 2024-09-17 16:47:59

《精通 ASP.NET MVC 4》----1.2 当今的Web开发的相关文章

《精通 ASP.NET MVC 3 框架(第三版)》---- 1.2 当今的Web开发

1.2 当今的Web开发 精通 ASP.NET MVC 3 框架(第三版) 除微软之外,自Web Form首次发布以来,Web开发技术发展迅速,这表现在几个不同的方向.除了已经提及的AJAX之外,还有一些其他的主要发展. 1.2.1 Web标准与REST 近些年来,向Web标准兼容的趋势已在增强.Web网站建立在比以往更广泛的设备和浏览器之上,Web标准(HTML.CSS.JavaScript等)使人们有望能够在任何地方--甚至在可联网的冰箱上--都可以有相当好的浏览体验.现代Web平台不可忽视

《精通 ASP.NET MVC 3 框架(第三版)》----1.4 谁该使用ASP.NET MVC

1.4 谁该使用ASP.NET MVC 精通 ASP.NET MVC 3 框架(第三版) 如同任何新技术一样,因为其存在就必须使用它,这并不是一个充分的理由.在以下小节中,我们将给出MVC框架与大多数流行的替代品比较所得到的我们的观点.作为编写一本关于MVC框架书籍的人,我们两人尽可能做到没有偏见,但我们知道,这受限于我们的客观情况.以下小节是基于技术的比较.当选择一个Web应用程序框架时,也应当考虑:在技术层面上,团队的技能.移植现有项目所涉及的工作.开发者的关系以及信心等方面的因素. 1.4

《精通 ASP.NET MVC 3 框架(第三版)》----1.6 小结

1.6 小结 精通 ASP.NET MVC 3 框架(第三版)在本章中,我们看到了Web开发如何高速演变,从CGI可执行程序的原始沼泽到最新的高性能.标准兼容.敏捷平台.我们回顾了微软自2002年开始就在使用的主流Web平台ASP.NET Web Form的优点.缺点和局限性,以及迫使微软用一些新事物响应Web开发行业的变革. 我们看到了ASP.NET MVC平台如何克服ASP.NET Web Form的缺点,以及它的现代设计如何把优势带给那些想编写高质量.可维护代码的开发者. 在下一章中,你将

《精通 ASP.NET MVC 3 框架(第三版)》----2.3 小结

2.3 小结 精通 ASP.NET MVC 3 框架(第三版)本章涵盖了建立工作站以及对服务器进行基本配置等方面的内容.下一章将向大家将演示如何创建一个简单的MVC 3应用程序.到本书最后的第23章,读者就做好了把MVC框架应用程序部署到服务器的一切准备了. 本文仅用于学习和交流目的,不代表异步社区观点.非商业转载请注明作译者.出处,并保留本文的原始链接.

《精通 ASP.NET MVC 3 框架(第三版)》---- 1.3 ASP.NET MVC的主要优势

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

《精通 ASP.NET MVC 3 框架(第三版)》----第2章 准备工作 2.1 准备工作站

第2章 准备工作 精通 ASP.NET MVC 3 框架(第三版)在进行MVC框架的应用程序开发之前,需要进行一些基础的准备工作.本章将介绍工作站开发和服务器部署做准备所需的一些工具. 本文仅用于学习和交流目的,不代表异步社区观点.非商业转载请注明作译者.出处,并保留本文的原始链接. 2.1 准备工作站 精通 ASP.NET MVC 3 框架(第三版)MVC框架开发的基础是一组工具集.这些包括Visual Studio 2010.Web平台安装程序以及诸如IIS之类的可选组件.下面将解释如何安装

《精通 ASP.NET MVC 4》----1.6 小结

1.6 小结 精通 ASP.NET MVC 4 在本章中,本书描述了Web开发领域的高速演变,从CGI可执行程序的原始沼泽到最新的高性能.标准兼容.敏捷平台:回顾了微软自2002年开始就在使用的主流Web平台ASP.NET Web Form的强项.弱点和局限性,以及迫使微软用一些新事物作出响应的广泛的Web开发行业的变革. 读者看到了ASP.NET MVC平台如何克服ASP.NET Web Form的弱点,以及它的现代设计如何把优势带给那些想编写高质量.可维护代码的开发者. 在下一章中,读者将看

《精通 ASP.NET MVC 4》----2.4 创建一个简单的数据录入应用程序

2.4 创建一个简单的数据录入应用程序 精通 ASP.NET MVC 4 本章的其余部分将通过建立一个简单的数据录入应用程序,来考察MVC的更多基本特性.本节将分步进行,目的是演示MVC的运转,因此会跳过对幕后工作原理的一些解释.不用担心--在后面的章节中还会重新深入地讨论这些论题. 2.4.1 设置场景 设想一个朋友要主办一个"新年除夕晚会",需要创建一个Web网站,以便让被邀请人进行RSVP(电子回复).这个网站需要以下四个关键特性: 一个显示此晚会信息的主页: 一个可以用来进行R

《精通 ASP.NET MVC 4》----2.3 渲染Web页面

2.3 渲染Web页面 精通 ASP.NET MVC 4 前面例子的输出并不是HTML,只是一个字符串"Hello, world".为了产生一个对浏览器请求进行响应的HTML,需要创建一个视图(View). 2.3.1 创建并渲染视图 要做的第一件事是修改Index动作方法,如清单2-3所示. 清单2-3 修改控制器以渲染一个视图 using System; using System.Collections.Generic; using System.Linq; using Syste

《精通 ASP.NET MVC 4》----2.2 创建ASP.NET MVC新项目

2.2 创建ASP.NET MVC新项目 精通 ASP.NET MVC 4 从在Visual Studio中创建一个新的MVC项目开始.在"File(文件)"菜单中选择"New(新建)"→"Project(项目)",打开"New Project(新项目)"对话框.如果在"Visual C#"选项组中选择"Web"模板,会看到一个可用的项目类型"ASP.NET MVC 4 Web