Change Dir

          先知cd——熱愛生活是一切藝術的開始

          統計

          留言簿(18)

          積分與排名

          “牛”們的博客

          各個公司技術

          我的鏈接

          淘寶技術

          閱讀排行榜

          評論排行榜

          Turbine框架

          首先,必須承認,turbine作為一個開發框架,已經快絕跡了,阿里巴巴的webx框架是基于turbine做的,所以這里簡單介紹一下,如果是阿里系新入職的同學,可以參考一下,當然任何開發人員如果感興趣turbine的設計,都歡迎。

          turbine是什么?

          turbine是一個應用開發框架,是一個開發web應用的工具箱,100%純java,且基于jdk1.3及以上。j2ee兼容且基于servlet,面向MVC構建。

          turbine的框架架構overview如下:

          image

          turbine的代碼結構包含了services、modules和util幾個大類,在上圖中可見,在servlet基礎之上,以MVC為基礎結構,modules包含了view部分及action,view主要是pages,其中有三種具體的module——screen、layout和navigation,action作為controller存在,toolbox提供了很多通用的tool,service則是整個框架的插件。一個完整的請求處理流程如下:

          image

          請求到來,turbine的controller處理,view部分渲染頁面,然后響應輸出。

          就順著這個流程,分析一下turbine的架構,對于view部分,我們最直觀想到的就是pages,page模塊值包含了幾個概念,是jsp的?還是velocity的?僅此而已。那么,以一個velocity頁面為例,如何組織呢?turbine講究的是“約定勝于配置”,記住這句真言,也就可以理解turbine了。在開發應用中,要建立三個頁面目錄,分別是screen、layout和navigation,screen是頁面的主體內容,layout是頁面的布局,而navigation則是一些頁面修飾元素,比如下面這個頁面結構:

          image

          這三個部分的調用順序如下:

          image

          因為約定的代碼結構是在三個目錄下寫對應名字的java代碼,因此名字如果不一致,那么就會出錯。當然,頁面模板目錄有默認的結構,如果在對應的目錄下找不到文件,就會讀取default.vm文件。

          image

          類似servlet,寫一個java文件對應處理screen頁面,那么代碼可能是這樣的:

          image

          可以看到,這種處理代碼很像servlet,方法就像是servlet標準中的doGet和doPost,只不過參數進行了封裝。其實,turbine就是一個servlet,看看turbine的源碼,Turbine類繼承了HttpServlet,實現了doGet和doPost方法,除了一開始初始化一系列配置相關的變量外,在接到一個http請求(get)后,turbine會執行doGet方法,turbine封裝了request和response,構建了一個叫做RunData的對象,Rundata是個接口,具體實現是DefaultTurbineRunData,其內部提供了獲取http各種數據的方法接口。在每個請求周期,turbine都會利用TurbineRunDataService新建一個RunData,將所有基于servlet的請求相關的東西塞到這個data中。然后,利用從request中得到的請求地址,再調用PageLoader找到對應的Page,執行其中的build方法,其中DefaultPage里會通過LayoutLoader和ScreenLoader來定位到對應的layout和screen,然后執行其中的build相關方法。這樣,一整套請求執行就完成了。值得說明的就是如果是表單提交,那么多數情況會多出一個action的執行,也是在page里進行的。如下圖

          image

          至于turbine中的tool,這類工具是通過配置,以“拉”模式被應用的。當應用啟動后,在vm頁面中以$開始調用某個tool的時候,就會初始化這個tool。當然,這里就用到了TurbinePullService。

          在初步了解了turbine后,如果使用過webx,那么就會知道并一定程度理解了webx的設計;沒使用過的,結合自己用過的mvc框架,也可以了解一些框架設計的思路。

          參考資料:

          Turbine Tutorial

          Apache Turbine

          本文全部圖片都截取自Turbine Tutorial,使用請注明

          posted on 2012-05-17 13:54 changedi 閱讀(2751) 評論(2)  編輯  收藏 所屬分類: Java技術

          評論

          # re: Turbine框架 2012-09-07 11:16 tubine

          官方文檔似乎還沒有你講解的詳細,官方文檔都不全。  回復  更多評論   

          # re: Turbine框架 2014-08-11 18:15 zi_hao

          你好,能把你這個helloword完整代碼給我一份不,zi_hao_jun@163.com謝謝!想找個例子真難,  回復  更多評論   

          主站蜘蛛池模板: 南京市| 辽源市| 广水市| 家居| 水城县| 广平县| 崇左市| 宁远县| 宝兴县| 肥城市| 宜阳县| 当涂县| 高雄市| 南华县| 朝阳县| 布尔津县| 泾川县| 高安市| 佛学| 金门县| 香港| 车险| 德庆县| 收藏| 江西省| 镇巴县| 神木县| 嘉峪关市| 沈阳市| 昌邑市| 富源县| 巍山| 托克托县| 辉南县| 虎林市| 绍兴县| 佛学| 思南县| 武鸣县| 巨野县| 河间市|