最輕省的MVC,ORM方案原來在別處–Ruby on Rails 2nd

來源:互聯網
上載者:User

2nd  2005.7.15 加入與J2EE內架構 的對比。

  Java世界裡幾百個ORM Framework和MVC Framework妖精打架,吸引了全世界大部分目光的時候,Ruby on Rails悄悄出現了。

優點
    1.簡潔。因為是Pragmatic Programer那幫子人搞出來的東西,所以非常Pragmatic,Ruby本身的動態語言優勢加上強悍的、高度自動化、瘋狂使用了反射的基類,使得Rails的代碼量只有Struts/Webwork+Spring+Hibernate的N份之一,預設的CRUD系統,只需要一行代碼。

    2.效能。據評測,速度居然還比Struts+Spring+Hibernate的速度快15%-30%。

    3.良好的語義和領域驅動開發。
        我覺得這點是最重要的,Active Record 採用了與Hibernate的Data Mapper不同的另一種領域模式--Active Record,獲得了最直接的DDD模式。而Action Pack 也吸取了眾多MVC架構的優點,同時去掉了他們的複雜性而成為亮點。還有Ruby能把語義定義得像DSL一樣。讓程式設計語言口語化也是我所關注的。
 
vs J2EE (first round)

     因為以上優點,說它悄悄出現其實不全對,已經有不少人開始不安的拿Rails與java的方案作對比,結果不外乎,Rails在中小型項目表現很好,但還不能適應複雜的商業邏輯。但是,就像EJB說別人不支援分布式一樣,是不是真有這麼多複雜的模型和邏輯呢,而且,Rails還在發展,以後如何還未知。

學習目的

        一來可以在中小項目裡直接應用Rails從而獲得N倍的開發速度,
  二來更重要的是反過來影響在Java World裡面ORM,、MVC的設計思路,改善自己的架構。
  而且,Rails的入門有個特點,花上15分鐘,寫一行代碼,就能實現第一個完整的CRUD系統,不像別的語言只能列印一句Hello world,真正useful的話要搞半天。

架構    
    ROR的架構圖如下,伺服器是Apache,根基是我認為最簡潔的MVC方案--Action Pack和最DDD的ORM方案--Active Record,再加上類似JSP的view template和小小的代碼產生器,就是Rails了。
   

vs J2EE (second round)

IBM DW上的文章 Ruby on Rails and J2EE: Is there room for both? 有詳細的對比,推薦

可見,兩者都是基於MVC與ORM模式,但兩者的實現哲學不同。
MVC層,兩者都是基於FrontController模式,通過DispatchServlet/ActionServlet ,把request映射到恰當的controller。不過Struts需要用xml詳細配置每一個映射和Forward,而Rails則按照預設原則進行配置。
另外,Struts提倡每個ActionServlet完成一個動作,而Rails提倡把一組相關的動作放在一個Controller中。

ORM層,Data Mapper與Active Recorder模式的區別相當大。
Hibernate的Data Mapper模式,需要由Session充當Mapper 對POJO在DB之間進行映射。

Active Recorder模式則是讓POJO封裝DB中的一行資料,同時擁有CRUD的預設操作,針對一組POJO的操作如find, delete,則放在類的靜態方法中。因為沒有了作為Mapper的Session,整個程式很自然,很DDD。

學習資料

 0. 隆重推薦
    koalant的Ruby on Rails實踐  (中文版,文筆清晰,看完它基本不用再看其他教程了)

1. 快速指南
        Rolling with Ruby on Rails part1 ,part2
        用Rails建立web應用 

2. Ruby資料
  《Programing Ruby 2nd》Progmatic bookshelf成員,第1版是免費的,隨Ruby安裝包附送。
           而包含了最新Ruby1.8的第2版要收費,好在Emule上可以下到電子版。
  《Progarming Ruby 1st》的部分中文翻譯

3. Active Record和Action Pack的資料
  Active Record
  Action Pack

4.Rails作者及其他Rubyer的blog
  David H. Heinemeier--loud thinking Rails的領導者
  Andy 
  Dave Thomas

5.Ruby網站
    Ruby on Rails
       RubyForge        Ruby的SourceForge
       RubyGarden
       Ruby中國
       Ruby-CN

相關blog
1.Hibernate3.0 vs Rails Active Record

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.