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