由於兩位 Web 開發人員的努力,現在我們已經有一份對 >Ruby on Rails 和 Python 的 >Django 框架頗為客觀公正的比較測評。Ben Askins 和 Alan Green 共同制定並各自並行開發了一個分享書評的簡單 Web 應用。他們的>報告以及>源代碼都已經發布到網上,供大家閱讀及下載。從測評結果中,他們得到這樣一個結論,兩個框架沒有哪個明顯優於另外一個,因此最佳方案很可能還是堅持使用你所選擇的語言寫出的框架。但是,仍然存在一些關鍵指標,使得在二者之間做選擇顯得不是那麼容易。
在這裡我們無須介紹 Ruby on Rails ,但對於 Django 還是有必要著筆下墨做下介紹。Django 之所以能在 Python 世界中脫穎而出,主要有兩個原因:一是Google 的大力支持,二是 Python 的掌舵人 Guido van Rossum 一反常態,在眾多基本差不多的選擇中對 Django 情有獨鐘。此外,Alan 和 Ben 也指出,“Django [……] 並不是 Ruby on Rails 的仿制品”。
在 兩位作者實現的Web 應用中代碼行的比較方面,Rails 以比 Python 少 4% 行數的成績而勝出。盡管 Django 中的模板顯得更加冗長,但是 Django 提供一個幾近自由的管理接口,因而使得實際上他們寫出來的 Python 代碼比 Ruby 代碼還要少。在開發時間方面,Rails 實現用了 25 小時 45 分,而 Django 僅用了 16 小時 36 分鐘。當然,我們不能輕易斷言到底 是Ben 還是 Alan 代碼寫得更快,但這還是對在 Rails 上編寫管理表單時需要的不同起了一定說明作用,而 Django 則通過模型中的若干提示生成這些代碼。作者推薦考察諸如 AutoAdmin 和 Streamlined 等 Rails 插件來進行相應的改進。
報告指出,通過使用 RJS 和集成的 Javascript 庫,Rails 使AJax 開發變得更加容易,而 Django 包含了 JSON 功能,但將所有的 Javascript 編碼以及對客戶端庫的選擇留給了開發人員。JavaScript 高手們可能會更喜歡 Django 的不干預政策,但除了這些人以外,其它所有人都能從 Rails 內建的 AJax 支持中受益。
另一方面他們表示,Python 框架為國際化提供了更優秀的基礎支持,因為 Python 平台提供與生俱來的 Unicode 支持及 gettext 消息替換功能,使得多語言網站可以針對不同的 HTTP 請求產生本地化響應。
Rails 的主要優勢在於其遷移機制,可以使得對數據模型的變更嘗試和改進變得容易,甚至對於生產環境的應用程序來說也是如此。Django 在此方面則尚無建樹。倘若 Alan 和 Ben 忽略代碼中遷移代碼的行數,那麼 Ruby 和 Python 的代碼數量是大致相等的。在加入模板後,Rails 解決方案要比 Django 方案少出 15% 的代碼行數,即便在提供了定制的管理頁面時也是如此。在這裡作者拿蘋果和(不存在的)橘子做比較,表現出對 Django 的偏袒。
Green 和 Askin 二位先生頗為簡潔地總結到:“盡管在二者之間做出選擇可能是件困難的事情,但好消息是任意一個框架都是團隊開發 Web 應用的優秀選擇。”假如你的應用中有高級的國際化需求,他們的分析報告表明 Django 會是最好的選擇。那些不需要國際化特性,但需要現成的 AJax 功能,期望有大量不同模板以及不想被數據遷移困擾的開發人員,則將從 Ruby on Rails 中受益匪淺。