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在內的新技術幫助他們實踐自己的夢想,在此我祝願他們都能找到屬於自己的長尾巴,祝他們都能夢想成真。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章