Web技术交锋2006

(本文发表于《程序员》2007年第1期)

16.5亿。相信每个从事web开发的同行现在都不会这个数字陌生。109日,Google用价值16.5亿美金的股票买下了YouTube.com。对于所有怀揣web 2.0梦想的从业者,这起并购案如同一支强心针,大家仿佛又看到了一夜成名或者一夜暴富的机会。于是,作为淘金必须的镐头与水桶,web开发的新技术重新受到了广泛的关注。

web开发者的角度回顾2006年,首先出现在我们记忆中的是AJAX——从技术层面上来说,这个词是“Asynchronous Javascript And Xml”的首字目缩写。但对于更多并不关心什么是“异步”、“Javascript”或者“XML”的网站用户来说,AJAX更大程度上意味着“Making Browsers Suck Less”——就像GMail那样,在HTML页面上提供丰富的交互能力。Web 2.0的一大特点是“用户创造内容”,更便利的交互就意味着用户的创作热情更能得到鼓励,所以AJAX成为web 2.0的特征之一也就是顺理成章之事了。

AJAX2006年的热潮并非空穴来风。在Amazon发布的“2006年最受读者喜爱的计算机及网络类图书”列表中,一本《AJAX in Action》高居榜首——负责翻译其中文版《AJAX实战》的AjaxCn.org也是国内实践与推广AJAX的先驱。紧随其后的是一本《精通CSS》,同样与web开发有着莫大的关系。尽管很多专家认为基于JavaScript、又饱受浏览器兼容问题之苦的AJAX只是web界面开发的“过渡性技术”,但不争的事实是:越来越多的网站采用或即将采用AJAX为他们的用户提供更便利的使用体验。而随着PrototypeDojoscript.aculo.us等一批AJAX框架的成熟,以及一批AJAX图书的问世,AJAX也逐渐成为了一种成熟可靠的技术——或者说,成为了web开发者们不可或缺的工具之一。

Web 2.0的实践家们一直相信着“长尾理论”——所谓“畅销”,在市场的统计图表上,其实只占前面的一部分,而在“头部”之后,还有一条长长的“尾巴”;将长尾上所聚集的商业潜能进行加总,威力往往轻松超越畅销榜上的前十名。不过这条长尾巴可不是那么容易抓住的:利基市场的消费习惯此前几乎没人关注,更遑论深入调研,所以网站的经营者更多的时候只能“摸着石头过河”——从一个模糊的理念入手,从一个简单的beta版本开始运营,根据用户的反馈不断调整网站的功能乃至经营模式。所以这条长尾巴也给站长们提出了一个新的课题:当那些热情的用户尝试了你的网站、并且告诉你他们的需求,你是否能够及时作出调整?或者落实到技术面,你所选择的技术和开发工具是否允许你及时作出调整?

这正是Ruby on Rails大受青睐的原因所在。很多人在接触Rails之后的第一感觉是:它能够很简单地开发web应用。不管使用Java还是.NET,越来越多的开发者开始深切地感到:这些“大一统”的技术平台虽然适用于企业级开发,在面对互联网应用时却多少有些力不从心。就在此时,Rails从天而降,而且它要简单得多。但光有简单是不够的。很多开发真实网站应用的专业软件开发者深入研究了Rails,并发现这不仅仅是一个快速开发网站的工具——它融汇了大量web应用开发的知识,这些知识从根本上降低了web开发的门槛。

如说,所有的Rails应用都采用了“模型-视图-控制器”(Model-View-ControllerMVC)架构。Java开发者都很熟悉MVC框架,例如TapestryStruts。但RailsMVC贯彻得更彻底:当你用Rails开发时,每一块代码该放在什么地方都有一定之规,代码之间都按照规定的方式进行交互。从一开始,Rails就已经帮你准备好了应用程序的骨架,即便还没有编写任何一行应用代码。同样是MVC框架,Struts也允许你实现各种各样的功能,但那只是“能力”,却不是“知识”。你可以有100种方式来组织你的web应用,Rails则把一种最适用的方式直接放到你的手上。

即便在J2EE的世界里,也有很多开发者曾经尝试把自己的经验揉合到框架设计中,但Java语言本身的静态特质使得人们不得不借助XML来描述大量信息——说得俗点,Java程序怎么写都是Java程序。而Rails采用了Ruby语言。Ruby很简洁,却又不致简练得难以理解;而且Ruby的语法非常灵活,开发者甚至可以根据需要创造出自己的语法。使用Ruby,你可以自然而清晰地表述自己的想法,因此Ruby程序很容易编写,而且放上几个月之后也很容易读懂——这是非常重要的。

开发者们还会在Rails中发现另一件事:这个框架的背后有一套完整的哲学支撑。Rails的设计始终遵循两个核心原则:DRY和惯例重于配置(convention over configuration)。DRY也就是“不要重复你自己”(Don't Repeat Yourself)的缩写:系统中的每项知识只应该在一个地方描述。借助Ruby的强大威力,Rails实现了这一目标。在Rails应用程序中,你几乎不会看到重复的代码,每件事情都只需要说一遍——你只要在符合MVC架构惯例的某个地方说一遍,以后就不必再重复了。用惯其他web框架的程序员大多有这样的经历:只要对数据库结构做一点点修改,就必须同时修改好几处代码。对他们而言,DRY的哲学不啻是一大福音。惯例重于配置也同样重要。对于“如何将应用程序组装起来”这件事,Rails自有一套默认的规则——相当有道理的一套规则。只要遵循命名惯例,编写一个Rails应用程序所需的代码量比起典型的、使用XML配置的Java web应用要少得多。

2006年里,国内的一批web 2.0开拓者跟随着37Signals等先行者的步伐,开始了对Ruby on Rails的尝试。包括书签网站“顶啊”(http://dingr.com)、日程安排网站“易做”(http://www.ezuo.com)、Ieasehttp://www.iease.com.cn)和“发生网”(http://www.8sheng.com)、文件存储网站51dirhttp://www.51dir.com)、相册网站Soopiehttp://soopie.com)、音乐评论网站“乐道”(http://www.likenote.com)、团队协作网站Trikrhttp://www.trikr.net)等一批新兴网站在内的中国web 2.0创业者们选择用Rails来开发自己的网站——也许你可以说我们提到这些名字仅仅是因为他们采用了Rails,但这又何尝不是他们能够在这个残酷的世界得以生存发展的原因呢?除了这些初创网站,天涯社区、豆瓣网等成熟网站也对Rails表现出浓厚的兴趣,并开始在部分功能的开发中采用。

JavaEye是国内著名的软件开发技术站点,其2.0版本也采用了Ruby on Rails开发。在接受InfoQ网站采访时,JavaEye的站长范凯表示:相对于传统的J2EE技术平台,他的开发团队采用Ruby on Rails获得了至少5倍的开发效率提升,JavaEye 2.0网站能够在不到三个月的时间内上线便是明证。但范凯同时也指出,这种高效率带来的不仅仅是机遇,同时也是对团队的挑战——如何充分发挥Rails的开发速度,如何在高速度下保持团队成员之间、团队与客户的紧密协作,都是他们面临的新问题。说得直白一点,Rails让这支团队变得如此高效,如何让开发过程和管理制度不致成为这支高效团队的绊脚石,这本身就是软件工程从未遇到过的挑战。敏捷方法提出了一套基于快速迭代的实践指导,但对于熟练掌握Rails的团队来说,有很多问题就连敏捷方法也没有好的解决办法——换句话说,敏捷方法只是Rails开发者的基本条件,他们还需要继续总结开发过程和项目管理方面的最佳实践。

尽管如此,Rails最大的意义在于它给“开发web应用的难度”这件事情划下了一条线。从此以后,不管来自微软、SunIBM还是BEA,任何一个新的web开发工具都必须至少具备与Rails相当的效率——换句话说,如果一个新工具开发网站所需的时间比Rails还长、代码量比Rails还多,它就会被挑剔的网站开发者们直接抛弃——或者干脆就不会出现。而在另一方面,对于开发者和创业者来说,开发一个网站的难度再也不会超过Agile Web Development with Rails书中的示例,这不啻是一大福音——也是一大挑战,原因是显而易见的。

在这篇文章的最后,我想给大家看另一个数字:160——目前中国共有大约160家视频网站,大多是在模仿YouTube.com的模式。新技术能给用户带来良好的交互体验,也能大大提升创业者的开发效率,但没有办法告诉他们“应该做什么”。2006年,web 2.0的热潮让很多人重新做起了网站创业梦,包括AJAXRuby on Rails在内的新技术帮助他们实践自己的梦想,在此我祝愿他们都能找到属于自己的长尾巴,祝他们都能梦想成真。



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1505697


你可能感兴趣的:(Web)