Rails框架從誕生的第一天開始就受到了B/S應用開發(fā)領域的廣泛關注,經(jīng)過大約幾年發(fā)展,Rails框架已經(jīng)逐漸成熟穩(wěn)定起來,國外已有相當多的公司開始選擇從JavaEE平臺過渡到Rails開發(fā)平臺。畢竟,Rails平臺提出了一個非常具有誘惑力的口號:開發(fā)效率是JavaEE開發(fā)平臺的10倍。
的確,Rails具有很好的開發(fā)效率,而且很難出錯:在JavaEE開發(fā)領域,你需要掌握很多框架,詳細了解每個框架的各種特性,你才可以組合出一套適合自己的開發(fā)平臺。但在Rails領域,你無需選擇,你只要按Rails平臺的約定開發(fā),一切都會非常合理,非常優(yōu)雅。
Rails平臺不僅提供了整套的MVC解決方案,并且提供了豐富的代碼生成器。Rails甚至不完全是一個框架,更像一個企業(yè)開發(fā)平臺,它搭建了整個應用開發(fā)的骨架,并提供了大量的代碼生成器來輔助開發(fā),開發(fā)者只需在系統(tǒng)生成的代碼骨架上進行適當修改、定制即可完成應用的開發(fā)。選擇使用Rails作為開發(fā)平臺,仿佛上了鐵軌的火車一樣,火車只管向前運行,鐵軌將負責把火車帶到最終目的地(Rails就是鐵軌的意思)。
Rails框架對迭代式的增量開發(fā)有很好地支持,即使系統(tǒng)的數(shù)據(jù)庫需要重新設計、需要增加系統(tǒng)實體,Rails一樣能夠輕松面對迭代式的增量開發(fā)正是敏捷開發(fā)的核心之一,這也是Rails框架被稱為敏捷開發(fā)框架的原因。不僅如此,由于客觀世界的復雜性,需求的變更常常是許多開發(fā)者最頭疼的事情。使用了Rails開發(fā)平臺后一切都改變了:Rails替你做好了擁抱改變的準備,它的靈動性令人嘖嘖稱奇。
自2007年Apple的Leopard上捆綁了Ruby on Rails出售以來,Rails 社區(qū)也已不斷壯大。全球有眾多的 Rails 開發(fā)人員充滿活力、團結互助,并且渴望不斷地改進該軟件??梢院敛豢鋸埖卣f,Rails 的改進應歸功于社區(qū),因為是程序員之間不斷的相互超越使得構建出的軟件越來越完善。如此不斷地循環(huán),各個功能才得以從初期階段快速發(fā)展,逐漸變的實用、功能不斷強大并完善,最終成為不可或缺的工具。在很多情況下,社區(qū)認為最基本的 gems 和 plug-ins 都會保留到 Rails 核心中。Rails 的 named scopes(一個查詢快捷方式),可實現(xiàn)與 nested forms 相同的功能。這是一個新增的功能,可取代以前的嘗試,并在相同的 HTML 表單中創(chuàng)建和編輯多個模型。實際上,對于 Rails 開發(fā)人員來說最困難的任務或許就是跟上變化的節(jié)奏。(幸運的是,目前有一些 Ruby 和 Ruby on Rails 的每周播客,這些播客會組織并呈現(xiàn)最新趨勢以及分享最佳實踐。)
全棧式的MVC框架
Rails是一個全棧式的MVC框架,換句話說,通過Rails可以實現(xiàn)MVC模式中的各個層次,并使它們無縫地協(xié)同運轉起來。
在實際開發(fā)一個MVC模式的Web應用項目時,如果使用Java開發(fā),需要用到Struts(View 層)、Hibernate(Model層)和Struts(Controller 層)spring 整合mvc 3個框架,而且需要額外整合3個框架開發(fā)出的內容。而使用Ruby語言開發(fā)相同的項目時,只需要用到Rails框架就可以完成。
約定優(yōu)于配置
為了說明各個對象之間的關聯(lián)關系,一般的Web應用開發(fā)框架往往采用寫入XML配置文件的方法。這種方式雖然可以解決一些問題,但是卻帶來了管理上的混亂。
Rails 對此的態(tài)度是約定優(yōu)于配置,這意味著在Rails中不會出現(xiàn)XML配置文件。Rails使用Web應用多年來積累的各種常見約定(更具體地說是命名規(guī)則)來代替XML配置文件,而在Rails內部的映射與發(fā)現(xiàn)機制根據(jù)這些約定可以實現(xiàn)對象之間的關聯(lián)。在第1章中,通過Rails的映射與發(fā)現(xiàn)機制實現(xiàn)了數(shù)據(jù)表與Ruby對象之間的關聯(lián)。
更少的代碼
使用約定來代替XML配置文件說明Rails本身完成了大量的底層工作,這意味著使用更少的代碼來實現(xiàn)應用程序是極有可能的。此外,代碼量的縮減也減小了出現(xiàn)bug的可能性,降低了維護程序和升級程序的難度。
生成器
Rails 使用的實時映射技術和元編程技術,免去了開發(fā)人員在開發(fā)過程中編寫大量樣板文件代碼的煩惱。在少數(shù)需要使用樣板文件代碼的時候,開發(fā)人員可以通過 Rails內建的生成器腳本實時創(chuàng)建,而不再是通過手工編寫。Rails的這個特點可以使開發(fā)人員更專注于系統(tǒng)的邏輯結構,而不必為一些瑣碎的細節(jié)所煩擾。
零周轉時間
對已有的Web應用系統(tǒng)進行修改后,其一般需要經(jīng)過配置、編譯、發(fā)布、重新設置、測試等一系列步驟才能投入使用,這明顯浪費了許多時間。而使用Rails開發(fā)Web應用系統(tǒng),可以通過瀏覽器即時查看程序運行結果,從而節(jié)約了大量的時間。
支架系統(tǒng)
Rails的支架系統(tǒng)可以自動為任何相關的數(shù)據(jù)庫表創(chuàng)建一套包含標準CRUD操作和前臺視圖的系統(tǒng)。通過支架系統(tǒng),開發(fā)人員可以方便快捷地操縱數(shù)據(jù)庫中的數(shù)據(jù)表。此外,Rails也允許開發(fā)人員使用自己設計的代碼或視圖來替換自動生成的代碼和視圖。
指導原則
Rails的指導原則是"不要重復你自己"(Don't Repeat Yourself, 或DRY).意思是說你寫的代碼不會有重復的地方.比如以往數(shù)據(jù)庫的接口往往是類似的程序代碼但是在很多地方都要重復用到.這無論是給編寫還是維護都造成了很大的代價.相反,Rails給你提供了絕大多數(shù)的支持,讓你只需要短短的幾行代碼就可以實現(xiàn)強大的功能.而且,Rails提供了代碼生成工具,讓你甚至不需要編寫一行代碼就實現(xiàn)強大的管理程序.Rails通過reflection和runtime extension減少了對configuration文件的依靠,這和Java,C#語言的方向有很大不同,讓你減少了很多配置和部署的麻煩,但是性能上卻完全可以應付一般網(wǎng)站的需求。
更多建議: