複製鏈接
請複製以下鏈接發送給好友

tapestry

(Web應用程序框架)

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

tapestry簡介

Tapestry框架是一個位於java servlet容器和Tapestry應用程序之間的層。Tapestry不是一個獨立運行的服務器;它是一個servlet的擴展,它運行於servlet容器(例如Tomcat)或包含servlet容器的應用服務器中(如Jboss,Websphere,或者WebLogic). Tapestry應用其實是由一系列頁面組成,而每個頁面是由可以複用的組件構成。
Tapestry是一種基於java的Web應用程序框架。Tapestry採用了組件的概念。程序員可以應用現有的組件或自定義應用程序相關的組件來構建應用程序。相對與現有的其他Web應用程序框架而言,應用Tapestry會讓程序員從煩瑣的,不必要的底層代碼中解放出來。 [1] 
Tapestry使用組件庫替代了標籤庫,沒有標籤庫概念,從而避免了標籤庫和組件結合的問題。Tapestry是完全組件化的框架。Tapestry只有組件或頁面兩個概念,因此,鏈接跳轉目標要麼是組件,要麼是頁面,沒有多餘的path概念。組件名,也就是對象名稱,組件名稱和path名稱合二為一。

tapestry聯繫

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具有很高的代碼複用性,在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請求。

tapestry最新版本

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
參考資料