(一)Rails框架縱覽:
(一)Rails框架縱覽:
學習Rails框架也好幾個月了,不過這段時間忙著考研複試,忘了不少了,總結一下,找回點感覺,好做畢業設計。
Ruby on Rails的兩大箴言:約定優於配置(Convetion over configuration)和DRY(Don’t
repeated yourself)造就了Rails 的極高的開發效率,使Rails框架迅速風靡世界,現在可以說是紅的發紫。
Ruby on Rails框架,是一個使web應用的開發、部署和維護變得更容易的框架,Rails框架非常適合進行敏捷開發和基於測試驅動開發,因為整個框架的設計,就將測試放在了很高的位置,你每生成一個Mode , Contorller
Rails的ORM做的相當的好用,雖然比hiberate的功能要弱一些,但使用Ruby語言的動態性動態的生成查詢函式的功能用起來比起Hibernate爽多了,讓你真正的脫離了對sql的低階操作(hibernate引入HQL,宣稱具有面向物件的查詢語句,感覺有自欺欺人的感覺,我感覺存在的理由只是作為一箇中介,方便根據不同的
belong_to,has_one,has_and_belongs_to_many類似宣告的方法,就可以輕鬆指定表間關聯。同時提供了Acts As List ,Acts As Tree,
ActionController作為控制器,其功能就是根據請求呼叫Action,在Action中執行業務方法,並轉向適當的檢視。ActionController提供了一種稱為請求路由(Routing Requests)的方法來匹配URL請求,從而找到正確的Controller和action,類似j2ee使用xml配置,但請求路由它只需要提供一套(或自己定製)路由匹配策略就可以處理所有的請求,比j2ee針對每一個Action請求需要一個mapping簡潔的多,同時也不失其強大的功能。ActionController也有類似於jsp的render(類似jsp 的forward)和redirect_to(類似於jsp的redirect),同時提供了Coookie和Session,其使用非常方便。並且使用了flash方便的在一個或多個請求中傳遞資訊。ActionController提供了過濾器(Filters)和效驗(verification)。Filter提供了類似Spring框架AOP同樣強大的功能(前置/後置/環繞過濾器),你可以動態的增強一個方法,使用Filter我們可以輕鬆實現身份認證,日誌等具有一個橫切面性質的業務功能。Rails提供了頁面快取,action快取,片段快取,大大減少了重複操作導致的伺服器資源和時間的耗費,
提高了效能。同時提供了快取實效策略和清掃器以及基於時間的快取實效策略,避免了手工管理快取的困難。同時Rails還不甘ActionController現有的功能和機制,在Rails1.2提供了REST(Representions State Tranfer), REST技術,使得只需要指名控制器和相應的資源,而不需要指名Action就可以進行相應的操作。REST是基於htpp協議的一些動詞GET,POST,DELETE,PUT來執行相應的操作的,它使得URLs簡潔清晰,可以根據不同的請求給予不同的響應(響應可以是.html,.xml,.js等),程式碼相對更少,使用一個面向CRUD的控制器以及清晰的應用設計。他在controller中使用response_to, 連線和表單使用新的help method以及在routes.rb裡生成新的路由等新的特色。
ActiveView提供了兩種模板rxml和rhtml模版,由於ruby語言的動態性,使得ruby語言嵌入rhtml中來控制頁面邏輯以及輸出具有原生的優勢,不用像jsp需要提供表示式語言(EL)。使用Helper方法可以避免在模版檢視中嵌入大量的程式碼(特別是業務程式碼),從而實現程式碼和表現的分離。ActiveView提供了大量的輔助方法來提供連線,生成表單,同時提供了分頁的功能。ActiveView使用佈局模版、區域性頁面模版,以及元件,使得大量的頁面和區域性頁面可以被共享和重用,其J2EE框架至今還尚未有以實現易於重用模版的和先進的理念(特別是渲染技術,Structs的Title ,JSF的渲染還不錯,但與之相比還相差甚遠),區域性模版技術與rails實現的Ajax技術搭配起來可以實現很酷的頁面動態效果,同時對區域性模版可以進行快取來改善web效能。模版可以方面的訪問Controller的例項變數和類變數,以及輔助方法,這一切都是Controller與頁面模版之間的互動非常容易,同時頁面之間可以傳遞引數也大大地增加頁面之間的互動性。
同時Rails提供的對Ajax完好的整合,rails對ajax的封裝使你只需要使用ruby程式碼就可以產生web2.0的很酷的效果,避免使用javascript這個難以除錯的東東,同時也避免了不少低階的操作,rails在背後替你做了一切。
最後值得一提的是rails1.2提供的Migration,對控制軟體版本,敏捷開發,資料庫模型的演變等提供了非常方便的支援。(本人乃rails新手,如有不當之處在所難免)