tapestry[Web應用程式框架]

tapestry[Web應用程式框架]

Tapestry並不是一種單純的MVC框架,它更像MVC框架和模板技術的結合,它不僅包含了前端的MVC框架,還包含了一種視圖層的模板技術,使用Tapestry完全可以與Servlet/JSP API分離,是一種非常優秀的設計。 通過使用Tapestry,開發者完全不需要使用JSP技術,用戶只需要使用Tapestry提供的模板技術即可,Tapestry實現了視圖邏輯和業務邏輯的徹底分離。

簡介

Tapestry框架是一個位於java servlet容器和Tapestry應用程式之間的層。Tapestry不是一個獨立運行的伺服器;它是一個servlet的擴展,它運行於servlet容器(例如Tomcat)或包含servlet容器的套用伺服器中(如Jboss,Websphere,或者WebLogic). Tapestry套用其實是由一系列頁面組成,而每個頁面是由可以復用的組件構成。

Tapestry是一種基於java的Web應用程式框架。Tapestry採用了組件的概念。程式設計師可以套用現有的組件或自定義應用程式相關的組件來構建應用程式。相對與現有的其他Web應用程式框架而言,套用Tapestry會讓程式設計師從煩瑣的,不必要的底層代碼中解放出來。

Tapestry使用組件庫替代了標籤庫,沒有標籤庫概念,從而避免了標籤庫和組件結合的問題。Tapestry是完全組件化的框架。Tapestry只有組件或頁面兩個概念,因此,連結跳轉目標要么是組件,要么是頁面,沒有多餘的path概念。組件名,也就是對象名稱,組件名稱和path名稱合二為一。

聯繫

Tapestry在整個環境中的位置;應用程式由可復用組件構成的頁組成。應用程式運行在套用伺服器中。對套用伺服器而言,Tapestry套用只不過是其他類型的servlet而已。

Web套用通常按照三個層面來實現,每一個層面都針對套用中不同的問題。

Φ 展現層的職責是負責接受請求和產生HTML的回響;

Φ 套用層的職責是負責所有的業務邏輯;這一層通常用EJB來實現;

Φ 資料庫層的職責是負責持久地存儲數據;

Tapestry僅僅是展現層的套用,或者說Tapestry僅僅是將處理好的信息展現給終端用戶,如HTML,以及處理來自連結和HTML表單輸入。Tapestry不知道或者不關心套用層、域邏輯層、或者信息的來源。一個Tapestry應用程式可以建立在平面檔案資料庫、可使用JDBC存取的關係資料庫以及分布在世界上各個網路上的EJB之上。Tapestry對你的套用沒有任何要求,它只是關注展現層是如何組織的。

Tapestry框架填充了web套用開發中隱藏的縫隙:它提供了一個與開發人員相關的一致的框架。通常,每個開發人員自行管理他或者她開發的部分取忽略了其他的工程紀律從而使得項目承擔更大的風險。假如將建造一個大樓的工作分解成建造不同樓層並安排給工人們設計和建造單獨樓層,最後將它們用吊機裝配起來。每一個工人都給了一個完成後建築的粗略的草圖並告訴他們那一層該做什麼:“我們將把財務部門安排在這裡”,或者“這兒將是公司的自助餐廳。”。你能預測到會出現什麼樣的災難性的問題;每一個工人將使用不同的材料和不同的布局。電梯軸不能垂直,一些工人忘了給電線和管道預留空間,更有甚者,忘記了安裝窗戶!!

可是,許多Web套用套用的開發仍然和上面描述的相似的混亂情況下被開發著。說明不完整;不同的開發人員以不同的方法處理類似的問題。一些開發人員不注意項目中的重要細節或者web開發中比較次要的細節。由於技術的不同,一些開發人員擅長些客戶端的javascript,其他的則擅長於後台系統的互動開發-但是項目管理者常常認為這些人是完全可以互換的。最常見的是,項目的成功或失敗擔子在最後完全落在“全壘打團隊“的肩膀上,他們不得不在剩餘的時間裡將所有的代碼片斷粘在一起。

繼續以前邊的比方為例。不管怎樣,工人都是從管道和布線已經完成的空樓層開始工作。所有的事情都變成安裝僅僅用於該層的固件的工作,項目的最後這些東西將會被正確的組裝起來。把樓層看作頁面,把固件看作組件,把安裝看作配置,你就能理解了Tapestry給開發人員提供的東西了。

Tapestry在解決開發問題上不是一個萬能藥;然而,它提供了一個描述Web套用項目實現和由不同開發人員提供的元素之間互動的一致的方法。Web應用程式沒有電梯軸線,但它們可以有,如統一的導航條,或嵌入的查詢表格,或統一的登入按鈕。這些元素都能實現成Tapestry組件,單獨地測試,並在每一個頁面上重用,這樣就能保證一致的外觀和一致的互動行為。

特點

Tapestry具有很高的代碼復用性,在Tapestry中,任何對象都可看作可復用的組件。JSP開發者是真正面向對象,而不是URL解析。對於對頁面要求靈活度相當高的系統,Tapestry是第一選擇。精確地錯誤報告,可以將錯誤定位到源程式中的行,取代了JSP中那種編譯後的提示。

因此,筆者一直對Tapestry情有獨鍾:如果技術允許,使用Tapestry會帶給整個套用更加優雅的架構,更好的開發效率。

但是,在實際開發過程中,採用Tapestry也面臨著一些問題必須考慮:

— Tapestry的學習曲線相對陡峭,國內開發群體不是非常活躍,文檔不是十分豐富。官方的文檔太過學院派,缺乏實際的示例程式。

— Tapestry的組件邏輯比較複雜,再加上OGNL表達式和屬性指定機制,因而難以添加注釋。

1、Tapestry是一個全面web application框架,是使用JAVA寫的。

2、Tapestry不是一個application server,Tapestry是一個使用在application server中的框架。

3、Tapestry不是一個application,Tapestry是一個用來創建web application的框架。

4、Tapestry不是JSP的一種使用方式,Tapestry和JSP只能夠選擇一種。

5、Tapestry不是一個腳本環境,Tapestry使用一種組件對象模式(component object model),這並不是一種簡單的腳本,而是用於生成高動態性高互交性的web頁面。

Tapestry基於Java Servlet API version 2.2,兼容於JDK 1.2以上版本,Tapestry通過變換多樣的組件模式,將一個web application分離為一個聯合組件。每一個組件都擁有其特殊的責任用於顯示web頁面或者回響HTML請求。

最新版本

2008-10-17日

Tapestry 4.1.6

Tapestry 5.0.15 2009-05-06

Tapestry 5.1

Tapestry 5.2 將支持Portal開發及Spring Web Flow

Tapestry 5.3

相關詞條

相關搜尋

熱門詞條

聯絡我們