新聞中心
1.JSF和Tapestry性能方面

創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比烏魯木齊網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式烏魯木齊網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋烏魯木齊地區(qū)。費用合理售后完善,10年實體公司更值得信賴。
JSF
從測試數(shù)據(jù)可以看出在只使用JSF及JSF自定義組件的情況下,webmail demo應(yīng)用速度最快,200用戶并發(fā)訪問的響應(yīng)時間為1.8秒,基本上可以達到servlet + jsp的性能。
使用JSF + 5個Facelet composition組件的情況下,webmail demo應(yīng)用仍可達到200用戶并發(fā)訪問的響應(yīng)時間為2.6秒的性能。
使用JSF + 20個Facelet composition組件的情況下,webmail demo應(yīng)用可達到200用戶并發(fā)訪問的響應(yīng)時間為3.1秒的性能。
如果在業(yè)務(wù)層方法沒有大的效率問題、并在壓力較大的頁面適當使用緩存的情況下,JSF應(yīng)用程序可以達到在dell 2850機器上100-200并發(fā)5秒內(nèi)響應(yīng)的性能
Tapestry
從測試數(shù)據(jù)可以看到tapestry在使用相同數(shù)量框架自身提供組件的情況下,運行效率比JSF明顯要低一些,但也算是在可以接受的范圍內(nèi)。
2.JSF和Tapestry開發(fā)方面
JSF
JSF對servlet API進行了封裝,程序員在使用組件做JSF應(yīng)用程序的開發(fā)時基本上不需要直接操作HttpRequest和HttpResponse,并且對用戶輸入驗證,手機等其它設(shè)備(通過rendererKit),多語言(通過資源文件方式)和換膚(通過rendererKit)的支持都有相應(yīng)的封裝,可以方便的實現(xiàn)。目前開源的組件庫有MyFaces,ADF等可以使用,其中有些組件內(nèi)置AJAX支持。
開發(fā)工具中IBM WebSphere Studio,Oracle JDeveloper 10g和FaceIDE等IDE對JSF應(yīng)用開發(fā)提供可視化編輯支持。下面是對JSF自定義組件和JSF+facelet composition組件開發(fā)進行比較
JSF自定義組件開發(fā):
JSF自定義組件由java代碼和tag庫文件組成,開發(fā)難度應(yīng)該與現(xiàn)有I2SS組件開發(fā)的難度基本一致,JSF自定義組件通過自定義標記構(gòu)造頁面,在頁面上增加組件的數(shù)量對性能有較大的影響。
JSF + facelet composition組件開發(fā):
facelet composition組件在個性化、重用方面對JSF提供了很好的補充。通過編寫tag庫文件,使用facelet可以把多個JSF自定義組件組合成facelet composition組件,或者把幾個facelet composition組件組合成新的facelet composition組件,這個過程不需要開發(fā)或設(shè)計人員編寫Java代碼。facelet composition組件是live模式運行時生成,從測試結(jié)果上看組件數(shù)量對性能的影響不大
學(xué)習(xí)曲線上,開發(fā)難度與組件基本一致,只要寫過組件或?qū)戇^servlet+jsp的人,加上適當培訓(xùn),一周內(nèi)都可掌握JSF或Tapestry開發(fā)
Tapestry
組件和頁面的開發(fā)過程完全一致,都是由模板、page/component class和specification文件組成。IDE方面目前有開源社區(qū)開發(fā)的eclipse插件Spindle和Tapestry Palette可用,對開發(fā)效率有一定的提升。
3.JSF和Tapestry集群支持方面
JSF
目前在I2SS上做的集群實驗是使用apache+jboss來實現(xiàn),結(jié)構(gòu)是apache做集群前端實現(xiàn)stick session,jboss做應(yīng)用服務(wù)器。
I2SS架構(gòu)應(yīng)用程序Session中放入的對象并不能全部串行化,所以在做集群時只能使用粘貼會話方式(stick session)實現(xiàn),這樣容易出現(xiàn)的情況是如果一臺機器down掉,這臺機器上的所有在線用戶都會無法繼續(xù)當前的會話。如果用戶重新發(fā)起登錄請求,任務(wù)會轉(zhuǎn)移到其它正常工作的機器上。如果down掉的機器重新恢復(fù),轉(zhuǎn)移到其它機器上的用戶不能重新使用這臺新啟動的機器,只有新發(fā)起的用戶請求和在線用戶調(diào)用session.invalidate()顯式退出后,工作才會轉(zhuǎn)移到新啟動的機器上,這樣負載的均衡時間會比較長。I2SS架構(gòu)應(yīng)用程序可以通過更改框架層,將現(xiàn)有放入session中的對象實現(xiàn)串行化,并且將不能串行化的對象放到session以外的地方來實現(xiàn)使用session replication的集群模式。
在JSF上做的集群實驗是使用apache+jboss來實現(xiàn),支持stick session和session replication兩種模式。stick session模式的結(jié)構(gòu)和討論如上述,session replication的結(jié)構(gòu)是apache做集群前端,通過jboss的TreeCache實現(xiàn)session replication。在編寫JSF程序時要把放入會話中的backing-beans實現(xiàn)串行化,如果一臺機器down掉,在線用戶的會話會轉(zhuǎn)移到其它正常工作的機器上,對于用戶的感受來說可能是速度變慢,但是不會出現(xiàn)會話斷掉的情況。如果down掉的機器重新恢復(fù),TreeCache通過網(wǎng)卡或文件系統(tǒng)完成session replication的過程后,在線用戶的任務(wù)就可以實現(xiàn)與機器未down時相同的負載均衡狀態(tài)。如果想減少網(wǎng)卡或文件系統(tǒng)的I/O操作,可以通過集群分區(qū)來實現(xiàn)。
Tapestry
Tapestry本身提供兩種state持久方式:傳統(tǒng)的session方式和client-side方式。狀態(tài)保存在session中的情況下,實現(xiàn)集群和JSF方式一樣,需要session replication。保存在client-side的情況下,有一些局限性,但是可以實現(xiàn)無狀態(tài)的應(yīng)用,自動支持集群。
4.對于I2SS組件與JSF組件混合使用的說明
JSF組件應(yīng)用程序是標準J2EE應(yīng)用程序,JSF組件對servlet API提供了封裝,同時也提供了直接得到servlet上下文的方法,所以I2SS組件與JSF組件的混合使用與現(xiàn)在已經(jīng)實現(xiàn)的郵件系統(tǒng)中servlet+JSP與I2SS組件的混合使用方法是一樣的,都可以用手動創(chuàng)建EbiContext實例的方法來實現(xiàn)。
5.目前JSF標準的進展情況,以及行業(yè)的支持情況
JSF 體系結(jié)構(gòu)
JavaServer Faces 的 MVC 實現(xiàn)
JSF 的主要優(yōu)勢之一就是它既是 Java Web 用戶界面標準又是嚴格遵循模型-視圖-控制器 (MVC) 設(shè)計模式的框架。用戶界面代碼(視圖)與應(yīng)用程序數(shù)據(jù)和邏輯(模型)的清晰分離使 JSF 應(yīng)用程序更易于管理。為了準備提供頁面對應(yīng)用程序數(shù)據(jù)訪問的 JSF 上下文和防止對頁面未授權(quán)或不正確的訪問,所有與應(yīng)用程序的用戶交互均由一個前端“Faces”servlet(控制器)來處理。
網(wǎng)站題目:Tapestry和JSF對比
網(wǎng)站網(wǎng)址:http://m.fisionsoft.com.cn/article/dhspjjj.html


咨詢
建站咨詢
