Posted on 2007-06-07 16:47
Tommy Jian 閱讀(2901)
評論(1) 編輯 收藏 所屬分類:
Wicket
動機
目前存在的大多數(shù)Web框架對于服務(wù)端的狀態(tài)管理都僅僅提供了較弱的支持。
這就意味著在Web應(yīng)用程序中存在著很多特殊的代碼來處理和維護繁復(fù)的狀態(tài)管理機制。雖然Wicket并不允許對服務(wù)端的狀態(tài)完全不考慮,但是它在狀態(tài)管理的簡便性和透明化方面做了很多的工作。
在Wicket中,所有服務(wù)端的狀態(tài)都被納入了自動的管理。您始終不需要直接使用HttpSession對象或者類似的封裝對象去存儲狀態(tài)信息。相反,狀態(tài)信息已經(jīng)都與組件關(guān)聯(lián)起來,而在組件后端的數(shù)據(jù)模型都是傳統(tǒng)的Java對象(POJO)。Wicket在每個用戶會話期內(nèi)維護著頁面的映射表(Map)。這個頁面映射表(以及每個一面內(nèi)的組件層次)的目的在于使得框架隱藏了組件以及數(shù)據(jù)模型訪問的細節(jié)。您只需要處理簡單而熟悉的Java對象,而Wicket則處理諸如URL、會話期標(biāo)識以及GET/POST請求的任務(wù)。
您接著也會發(fā)現(xiàn)這種結(jié)構(gòu)良好的服務(wù)端狀態(tài)使得解決令人恐懼的“后退按鈕問題”變得十分的容易。實際上,針對頁面內(nèi)組件數(shù)據(jù)模型的結(jié)構(gòu)性變化帶來的數(shù)據(jù)過期,Wicket提供了通用而且健壯的解決方案,這個方案可以有效地對瀏覽器緩存頁面進行甄別和過期檢測。
最后,Wicket在設(shè)計的時候就考慮與諸如JDO和Hibernate的普通Java對象(POJO)序列化框架協(xié)同工作。這一點使得構(gòu)建數(shù)據(jù)驅(qū)動的Web應(yīng)用程序顯得非常簡單。
對于很多應(yīng)用程序來說,必須在額外服務(wù)端狀態(tài)導(dǎo)致服務(wù)器負載增加和其帶來的好處之間進行權(quán)衡,服務(wù)端狀態(tài)管理可以降低開發(fā)成本、減少維護成本、加快對市場的響應(yīng)時間以及生產(chǎn)高質(zhì)量的軟件。這里提出的基本觀點是:軟件是十分昂貴、復(fù)雜的,而來自于E-machines和Dell的服務(wù)器則相對便宜。
在效率和生產(chǎn)性方面,Wicket對JSP的優(yōu)越性則猶如Java語言對C語言一樣。您使用Wicket可以實現(xiàn)的功能使用JSP也都可以實現(xiàn)。甚至于在內(nèi)存和CPU消耗方面效率也非常的高。但是使用JSP開發(fā)應(yīng)用程序則需要耗費您更多的時間。最后,因為在JSP中進行狀態(tài)管理時使用了特別的方式,您可能發(fā)現(xiàn)不少的安全問題,也能看到到處蹦出來的錯誤。上面提及的大部分框架在這方面僅僅提供了有限的輔助。
注:本文由Jonathan Locke編寫,相關(guān)權(quán)利由原作者承擔(dān)。