談談J2EE架構Paoding-Rose

來源:互聯網
上載者:User

很久沒有發過文章了,不是俺懶,首先是精力放到了考試和申請上了,從八月到十二月都在忙考試和申請,現在已經都

告一段落了,可以幹些別的事了。其實說沒時間也都是借口,主要還是技術上沒有太值得寫的東西,自己沒親自上手用過的,不

想寫些沒啥品質的水文或者評論文章,非技術的東西又寫著沒意思,轉載某本書的章節或者翻譯外文的事,俺也興趣不大。所以

沒東西寫就乾脆不寫。

最近給我的一個產品做技術選型,耍了耍Paoding-Rose(下文簡稱Rose),其實這個架構早在兩年前我就關注到了,

當時是在Infoq上看到的一篇人人網架構師的文章,說開源了人人網的前端架構Rose,只不過那個時候已經被各種J2EE架構整的

麻木了,所以只是下載了,但是一直沒用過。當時的興趣都在動態語言和MacOS上,那會的編譯原理和作業系統課也挺牽扯精力

的(後半句是借口)。Rose的Google Code官網下載的包裡沒有Demo,只有幾個jar檔案,官網上有Wiki作為使用指南,協助

開發人員使用這個架構。Wiki寫的挺全的,勤快點還是可以做出來官方Demo的。這次借這個機會,用Rose做了一個小Demo,一

個簡單的僱員管理系統,包含了基本的CRUD、分頁、上傳、攔截器、Portal,持久層用的Rose內建的Jade,用的最新版本1.01

(其實也不算新,一年半都沒更新過了),用的很舒服,開發效率非常高。如果再來個指令碼工具自動建個表並產生個CRUD,那效

率就真趕上Rails了。為啥我這裡要提Rails,那是因為Rails有個閃亮的特點,叫約定優於配置。(您要非說兩個架構的首字母都是R

,我也沒意見)。網上關於Rose的文章很少,俺寫寫填補一下空白吧。先聲明一下,俺並沒有任職於人人網,只是覺得這個開源框

架中有些設計思路不錯,所以記下來。下面會談談我在使用Rose的過程中發現的七個明顯的優點。

1.       約定優於配置

先說約定優於配置,這個優點是我體會最深的。包路徑,類名,類方法名都不需要設定檔聲明,只要名稱包含特定的關鍵字和

Annotation就行,只要滿足這個條件,其他的命名部分可以隨便修改,不需要修改任何配置。

包名和類名: 

 

 Annotation聲明:

 

這非常爽,當年用SSH單挑項目的時候,寫配置都寫的手酸。這裡就牽扯到XML和Annotation哪個更好的問題了,總之各有優勢,

我會分場合使用。XML的優點是配置獨立於代碼外,無需編譯,結構也更清晰直觀,便於管理與修改。例如Ibatis就把sql都放到xml

裡,這樣確實非常方便管理。Annotation的優點就是提供一體化解決方案,不涉及XML等第三方技術標準,開發起來比較順手也很簡

潔,不用擔心XML檔案過多。JPA就是把資料對應都用Annotation配置,也確實乾淨。我在使用的過程中會把經常變動的屬性提到XML

中,這樣方便管理與修改。Annotation則處理不經常變動的部分,比如一些資料或路徑映射關係。  

2.       自動綁定

自動綁定也是非常實用的功能,Struts2和Struts比起來,比較明顯的地方就是表單的自動綁定,我當時實用struts2的時候,

是必須使用struts2標籤和set才能自動綁定表單資料的。Rose則不用這樣,沒有任何標籤限制,可以自由綁定屬性,並且直接通過

Annotation傳參,不需要set資料。資料持久層的Jade架構也提供屬性自動綁定,不需要任何的set,get方法,非常提升開發效率。

3.       REST風格

由於Rose基於Spring開發,所以使用了很多Spring MVC的組件,也帶來了Spring MVC的REST風格,Rose具備了Spring MVC

的很多優勢,為了驗證與Spring MVC的異同,我專門做了一個Spring MVC 3.0版本的CRUD操作,用來比較開發效率與實現方法。還

是Rose更為快速,Rose對Spring MVC中的URL映射和頁面傳值操作都進行了最佳化,看起來更優雅一些,完全支援REST。

4.       Jade極簡主義

Jade架構極大的提升了開發效率,DAO介面方法加一句SQL實現資料庫操作和賦值,不多說了,:

補充一點,當然也是支援整合緩衝架構的,即便是有些緩衝架構的支援不是特別的好,我覺得自己管理緩衝也無所謂,反倒更靈活一些。

自己可以決定儲存哪些欄位。我倒是不怎麼喜歡啥都扔給hibernate管理。

5.       Portal技術

這個技術蠻帥的,也是人人網架構師比較自豪的一個java後台原創技術,實現的基本原理就是對於需要許多資料渲染的頁面(例如

公用首頁)做頁面模組切分,比如關注列表一個模組,留言一個模組,最新動向一個模組等等。然後每個模組作為一個window並發從

資料庫取資料,然後再重新整合資料,最終呈現給使用者。可以設定一個時限,比如幾百ms,如果在限定時間內,資料沒有拿出來,就不

顯示這個模組了,保證使用者端的響應速度。這個技術也經過了SJ聖戰的洗禮,確實發揮了作用,是一個蠻有意思的設計思路。後台原理

類似scala的並發演算法,把資料分塊,然後並發計算。前台效果也類似新浪微博使用的頁面片段載入技術,為了保證使用者的響應速度,先

部分載入頁面片段,逐步顯示整個頁面。Facebook也有一套類似的實現方案。

6.       相容性

Rose使用過濾器而非Servlet攔截請求,現在大部分架構都在通過過濾器攔截請求,比如Struts2,Spring。這樣做的好處就是,

可以方便與其他架構的相容。也基於這點使Rose有了REST的風格。並且也可以與基於Servlet攔截請求的Struts共存,改造遺留系統。

官方描述人人網的前端架構就是這樣移植的。

7.       養成好習慣

首先是靈活的攔截器控制,比如局部攔截器是基於包目錄的範圍,這樣可以協助開發人員養成良好的許可權模組切分習慣。其次是

控制器方法映射支援Regex以及直接返回Json和XML格式資料,這樣可以協助開發人員更好的命名映射路徑與規範輸出資料。約定

優於配置也協助開發人員規範的命名包和類。某種程度上Rose收集了最佳實務,引導開發人員遵守規範。最後如果架構存在Bug或者相容性

問題,可以通過修改架構源碼解決。    

PS:對Rose有興趣可以訪問官網,連結:http://code.google.com/p/paoding-rose/,wiki寫的挺全。

我在這預祝大家元旦快樂了。I came back.

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.