隨著IT技術(shù)在住宅小區(qū)中愈來愈廣泛的應(yīng)用,小區(qū)內(nèi)、外的各種信息也愈來愈多,如何將這些信息有效、低成本地實現(xiàn)整體集成與共享,即搭建一個小區(qū)統(tǒng)一的信息集成與共享平臺,是我國住宅小區(qū)智能化、數(shù)字化建設(shè)發(fā)展的一個亟待解決的問題。隨著門戶(Portal)技術(shù)的不斷成熟,基于Portal技術(shù)的數(shù)字化住宅小區(qū)信息集成門戶在解決小區(qū)內(nèi)的信息孤島,實現(xiàn)各應(yīng)用系統(tǒng)之間的相互協(xié)作、統(tǒng)一管理和狀態(tài)監(jiān)控方面具有很大的優(yōu)勢。然而在門戶的開發(fā)過程中,仍然有許多地方需要完善和提高,特別是在開發(fā)效率和代碼重用性等方面有待加強。因此,采用Tapestry組件開發(fā)框架結(jié)合Portal技術(shù)來進行門戶開發(fā)是目前一個較為理想的技術(shù)解決方案。
對開發(fā)人員來說,頁面和代碼的有效分離,并采取組件式的開發(fā)方式,無論是從開發(fā)效率還是代碼的重用性等方面都會有很大的提升;對系統(tǒng)集成商來說,不僅僅開發(fā)周期縮短,開發(fā)成本降低,而且門戶平臺的架構(gòu)也更加合理和易擴展;對小區(qū)用戶來說,通過一個入口便可訪問小區(qū)內(nèi)的所有資源,并可獲得多樣化、個性化的信息服務(wù)方式和內(nèi)容,實現(xiàn)資源的個性化配置和高效管理。
因此,把結(jié)合Tapestry的Portal作為數(shù)字化住宅小區(qū)信息集成平臺,實現(xiàn)小區(qū)信息應(yīng)用的整合、集成、增值,將成為未來重要的信息應(yīng)用集成的基礎(chǔ)框架之一,從而為數(shù)字化城市的全面推進打下基礎(chǔ)。
Portal門戶技術(shù)的現(xiàn)狀
portal簡介
Portal是一個基于web的應(yīng)用程序,它主要提供個性化、單點登錄、不同來源內(nèi)容整合以及托管不同后端系統(tǒng)的表示層。Portal中可以聚集若干的Portlet窗口,也就是說,它將不同的應(yīng)用程序用戶界面組合到一個統(tǒng)一的表示中去,同時可以使用戶通過身份驗證以便訪問個性化的視圖。隨著越來越多的企業(yè)Portal的出現(xiàn),不同的廠商已經(jīng)創(chuàng)建了各種不同的Portlet實現(xiàn)標準,存在多種獨有的接口并產(chǎn)生了互操作性和重用性差等問題。因此,Java Community Process(JCP)定義的Java Portlet規(guī)范(JSR l68)提供了Portlet和Portal之間的互操作性的標準,使Portal開發(fā)更加規(guī)范化。
Portlet開發(fā)的不足
雖然一個個Portlet是可以重用的Web組件,但其開發(fā)效率并不高?,F(xiàn)階段主要是用Velocity或用JSP技術(shù)來開Portlet,而JSP雖然自誕生起一直是Web前端網(wǎng)頁制作的主流技術(shù),而且可以結(jié)合Java Bean和Servlet來實現(xiàn)基于MVC(Module-View-Controller)的開發(fā)模式,但充當Model的Java Bean本身是可以不從JSP中分離出來的,只是為了使JSP代碼較簡潔以及顯示邏輯與業(yè)務(wù)邏輯有所區(qū)分才這樣做的,這種耦合的不徹底也不可避免地在顯示邏輯中加入過多的Java代碼,這樣就會使View和Model的界限變得不明了,它們之間的一致性也就變得較難維護,代碼可重用性不高。相對于JSP技術(shù),Velocity用于開發(fā)Portlet的效率要高些。Velocity是由Apaehe組織開發(fā)的通用的模板解決方案,是一種基于Java的高度實用的、開放源碼的模板引擎,開發(fā)人員基本可以只關(guān)注模板本身,用VTL(Velocity Template Language)和HTML片斷來安排和優(yōu)化顯示邏輯。因為Velocity中沒有像JSP那樣在HTML中嵌入Java代碼,因此顯示邏輯比后者更為清晰和明朗,而且分離得更徹底。
總的來說,不管是用JSP技術(shù)還是Velocity技術(shù),都是可以完成基于JSR168標準的Portlet開發(fā),但由于其二者都沒有融入組件式開發(fā)的思想,因此小型的開發(fā)項目還能夠應(yīng)付,但對于大型的門戶項目而言,隨著Portlet的不斷增加,開發(fā)效率的提升和項目的可維護性都是不可忽視的因素,所以基于組件式開發(fā)框架Tapestry的Portlet開發(fā)不失為一個明智的選擇。[nextpage]
組件開發(fā)框架Tapestry
Tapestry介紹
Tapestry是一個開源的基于Java語言編寫的表現(xiàn)層組件式框架,用于創(chuàng)建動態(tài)的、健壯的、高靈活性的web應(yīng)用程序。它把無狀態(tài)的、以操作為中心的Servlet API重塑為有狀態(tài)的、以組件為中心的模型,簡化Web應(yīng)用的開發(fā),使開發(fā)更快、更有效率。Tapestry框架構(gòu)筑在標準的Java Servlet API之上,因此它能夠很好地兼容任何servlet容器或者應(yīng)用服務(wù),它將一個web應(yīng)用程序分離為一組頁面,而每個頁面又由多個組件組成,一個Tapestry組件一般稱作JWC(Java Web Component),它能與其他組件一起組合,生成實例,進行配置,這就提供了一個協(xié)調(diào)一致的結(jié)構(gòu),使得Tapestry框架能夠?qū)W⒂谌魏我粋€關(guān)鍵細節(jié)。在Tapestry中,創(chuàng)建應(yīng)用程序是通過使用對象、方法以及對象的屬性,帶來了真正的Java Web應(yīng)用程序的面向?qū)ο缶幊獭?
HTML文件、Java類文件和Page文件。HTML文件除了Tapestry組件用到的參數(shù)外,和普通HTML文件沒有任何不同;Java類文件專門負責處理該HTML文件的顯示、提交、數(shù)據(jù)更新等;Page是XMI,格式的文件,它定義了組件的變量和屬性,以及映射相應(yīng)的Java類、變量定義和自定義組件等。Page文件在這里起到了橋梁的作用,Page文件的名稱必須和對應(yīng)的HTML文件的名稱一致,然后在Page文件必須定義該頁面對應(yīng)的Java類,于是三者結(jié)合在一起。
Tapestry的擴展性也做得很好,最新的版本中已融人了Dojo這個優(yōu)秀的開源AJAX開發(fā)框架,而AJAX技術(shù)也是WEB2.0的核心技術(shù)之一,因此采用Tapestry可以快速的進行WEB 2.0 Portlet的應(yīng)用開發(fā),帶給用戶更好的應(yīng)用體驗;同時,Tapestry也使用了Hive Mind這個優(yōu)秀的DI(Dependency Injection)容器,即依賴注入,用于協(xié)調(diào)各組件間相互的依賴關(guān)系,實現(xiàn)組件間關(guān)系從程序內(nèi)部提到外部容器來管理,大大提高了組件的可移植性,重用機會也變得更多。
Tapestry與Portal的融合
Tapestry 4.0及其以上版本提供了Portlet規(guī)范的一種實現(xiàn),完全支持對JSRl68 Portlet的開發(fā)。Tapestry本身實現(xiàn)了對標準Portlet API的封裝,嚴格按照JSRl68規(guī)范來實現(xiàn),其開發(fā)的Portlet,現(xiàn)已通過Exo,Jetspeed2,Liferay等Portal Server的支持。
Tapestry進行Portlet開發(fā),主要進行以下配置:
(1)portlet.xml:portlet應(yīng)用部署描述符,包括對portlet的信息描述等。
(2)hivemodule.xml:Hivemind配置文件,依賴注入的配置描述符。
(3)web.xml:web應(yīng)用必備的配置描述符,定義了版本號,國際標準碼,服務(wù)器的版本信息等。
(4)Mapping Requests to Pages:這是Tapestry組件和portlet之間的—座橋,通過配置,可制定portlet與page文件的映射,而Tapestry組件就定義在page文件中,從而實現(xiàn)了Tapestry組件與portlet的映射。
基于Tapestry開發(fā)Portal的優(yōu)勢
使用Tapestry開發(fā)Portal能夠獲得以下好處:
(1)Tapestry的頁面模板除了幾個特別屬性和標識就是一個標準的HTML文件,能夠保證對HTML最少限度的干擾。
(2)基于組件,使得表現(xiàn)層變成由一個個組件堆積而成,對于大型項目,開發(fā)效率會隨著開發(fā)時間的增加而快速提升。
(3)由于表現(xiàn)層邏輯全部放在了Java文件里面,因此對邏輯的操作達到了“隨心所欲”的地步。
(4)利用Tapestry的Web2.0組件,可以快速的開發(fā)WEB2.0 Portlet,帶來更好的用戶體驗。
(5)由于Tapestry完全支持對JSR-168Portlet的開發(fā),因此可以輕松的移植到各種Portal服務(wù)器上,比如開源的Exo,Jetspeed2,Liferay;商用的IBM Web Sphere Portal Sever,BEA Web logic Portal Server等。
除了以上主要的5個優(yōu)勢,也應(yīng)包括成本的降低,因為Tapestry是開源的。 [nextpage]
Tapestry在數(shù)字化住宅小區(qū)信息集成門戶中的應(yīng)用
數(shù)字化住宅小區(qū)信息集成門戶是一個覆蓋全小區(qū)的、統(tǒng)一的、可以滿足用戶個性化需要的信息服務(wù)平臺。為小區(qū)內(nèi)外各類用戶提供多種信息查詢,集成了小區(qū)各種信息資源,并將各系統(tǒng)的信息服務(wù)整合起來,為不同類型用戶提供個性化的信息發(fā)布和服務(wù)。小區(qū)內(nèi)的各類用戶只需通過一個統(tǒng)一的界面登錄,系統(tǒng)即可按該用戶身份和授權(quán),定制出他可以訪問的信息范圍,并為用戶提供多種查詢邏輯與靈活的查詢條件設(shè)置方法等,以滿足用戶對各個系統(tǒng)數(shù)據(jù)的查詢需要。
用一個分層模型來描述數(shù)字化住宅小區(qū),主要著重表示的是數(shù)字化住宅小區(qū)信息系統(tǒng)模塊的層次劃分和各模塊之間的關(guān)系??梢钥闯?,為了統(tǒng)籌規(guī)劃數(shù)字化住宅小區(qū)信息集成門戶的建設(shè),數(shù)字化住宅小區(qū)信息集成門戶模型共分成了5層,包括各類網(wǎng)絡(luò)應(yīng)用系統(tǒng),各種管理信息系統(tǒng)與信息服務(wù)系統(tǒng)等。
每一層做簡單描述如下:
(1)第一層是“小區(qū)網(wǎng)絡(luò)基礎(chǔ)設(shè)施”,指小區(qū)網(wǎng)絡(luò)及其相關(guān)服務(wù)器系統(tǒng),實際上就是設(shè)備層,它支持著數(shù)字化住宅小區(qū)的上層應(yīng)用。
(2)第二層是“網(wǎng)絡(luò)基礎(chǔ)服務(wù)”,其外延是為各類信息系統(tǒng)(如物業(yè)管理系統(tǒng),小區(qū)能源管理系統(tǒng)等)提供基礎(chǔ)服務(wù)的通用平臺,包括安全保障體系、電子身份體系、目錄服務(wù)系統(tǒng)、網(wǎng)上支付平臺等。
(3)第三層是“小區(qū)信息服務(wù)公共平臺”,它是數(shù)字化住宅小區(qū)信息化建設(shè)中抽象出來的一個公共平臺,其外延是為數(shù)字化住宅小區(qū)提供信息集成服務(wù)。包括物業(yè)管理系統(tǒng)、設(shè)備監(jiān)控系統(tǒng)、安全防范系統(tǒng)、家居智能化系統(tǒng)、火災(zāi)報警系統(tǒng)、能源管理系統(tǒng)等系統(tǒng)的信息,是上層應(yīng)用系統(tǒng)能夠集成起來的基礎(chǔ)。
(4)第四層是“門戶應(yīng)用”,是數(shù)字化住宅小區(qū)中運行的各業(yè)務(wù)系統(tǒng)的綜合應(yīng)用,實現(xiàn)小區(qū)內(nèi)各種系統(tǒng)的集成和協(xié)同工作。正是這些系統(tǒng)的協(xié)同應(yīng)用,支撐著小區(qū)實現(xiàn)“網(wǎng)上管理、網(wǎng)上辦公、網(wǎng)上服務(wù)”。
(5)第五層是“個性化服務(wù)”,它是提供給用戶的統(tǒng)一界面,是數(shù)字化住宅小區(qū)的總?cè)肟冢脩艟涂色@得與其身份相稱的各項服務(wù),并且可以定制頁面和內(nèi)容,實現(xiàn)用戶的個性化服務(wù)。
Tapestry應(yīng)用在第三層“小區(qū)信息服務(wù)公共平臺”,這也是數(shù)字化住宅小區(qū)信息集成門戶中最重要、最關(guān)鍵的一層,涉及到底層和上層的協(xié)調(diào)。通過使用Tapestry框架,增加新的系統(tǒng)可以快速的開發(fā)和部署,并不會影響現(xiàn)有的系統(tǒng)。例如:小區(qū)需要新增加一個“電子巡更系統(tǒng)”,只要通過Tapestry框架開發(fā)好相應(yīng)的接口,并可以利用已有的“火災(zāi)報portlet”中的消息服務(wù)組件,實現(xiàn)異常情況的報警,因為這兩個系統(tǒng)的功能都是將異常情況及時通知給小區(qū)管理員,所以消息服務(wù)組件可以重用,這種重用,不是傳統(tǒng)意義上的代碼復(fù)制,而是真正的組件重用。最后將開發(fā)的“電子巡portlet”打包成了SRl68規(guī)范的標準portlet,可以部署在各種Portal Sever上。
利用Tapestry和Portal技術(shù)使門戶在架構(gòu)上更加合理和可擴展,開發(fā)效率得到很大的提升,而系統(tǒng)的可維護性和代碼的重用性也大大的增加,并能把小區(qū)內(nèi)出現(xiàn)的越來越多的子系統(tǒng)很好的集成在一起,為上層的應(yīng)用服務(wù),而且在開發(fā)過程中積累的各種組件,為后續(xù)的開發(fā)和維護提供了更好的條件。
隨著我國社會信息化的快速發(fā)展,作為數(shù)字城市有幾組成部分的數(shù)字化住宅小區(qū),必將得到空前的大發(fā)展。在數(shù)字化住宅小區(qū)中系統(tǒng)化地結(jié)合Tapestry和Portal技術(shù)使用,能夠有效地降低系統(tǒng)集成商的開發(fā)成本和風險,同時也使用戶能夠更加靈活和方便地訪問小區(qū)的各種信息,具有較高的應(yīng)用價值。