- 相關(guān)推薦
淺談基于Pushlet推技術(shù)的網(wǎng)絡(luò)應(yīng)用程序開發(fā)的研究
【論文關(guān)鍵詞】:服務(wù)器推技術(shù) 瀏覽器 重載
【論文摘要】:服務(wù)器推技術(shù)(pushlet)可將變化的數(shù)據(jù)主動地推送到客戶端的瀏覽器中,客戶端利用網(wǎng)頁開發(fā)技術(shù)將服務(wù)器傳送過來的數(shù)據(jù)直接更新到瀏覽器的網(wǎng)頁中,實現(xiàn)了網(wǎng)頁的局部更新,而不再需要重載頁面或重新別新Java小應(yīng)用程序的全部內(nèi)容,達到了減少服務(wù)器的數(shù)據(jù)傳送負載,減少網(wǎng)絡(luò)資源消耗的目的。
1、引言
”服務(wù)器推”( Pushlet)技術(shù)產(chǎn)生之前,人們通常采用”拉取”(Pull)的方式搜尋信息,比如利用網(wǎng)絡(luò)搜索引擎搜索信息。但是,這種方式經(jīng)常會使用戶陷人信息查詢結(jié)果的低效益和面對”信息垃圾”的尷尬局面。因此,人們迫切希望信息服務(wù)者能夠通過某種通知機制主動地提供信息,同樣信息服務(wù)者也非常迫切地希望能夠?qū)⑿畔⒓皶r、主動地發(fā)送到感興趣的用戶那里,而不需要用戶自己努力的尋找。
Pushlet技術(shù)實質(zhì)上定義了一種信息服務(wù)框架,用戶根據(jù)這個框架可以開發(fā)自己的應(yīng)用程序軟件。這種軟件的特點是可以根據(jù)用戶定義準則,自動搜集用戶最可能發(fā)生興趣的信息,然后適時地傳遞到訂閱的客戶端。
2,”服務(wù)器推”( Pushlet)技術(shù)基本原理
Pushlet采用JSP/Semlet技術(shù),把數(shù)據(jù)直接從服務(wù)器的Java對象推到客戶端瀏覽器的動態(tài)HTML (HyperTextM ark2up Lan-guage)頁中,而不使用Applet或Active!插件。利用pushlet推技術(shù),服務(wù)器可主動地更新客戶端的內(nèi)容。Pushlet技術(shù)框架如圖1一1所示。
Pushlet是基于HTTP流實現(xiàn)的,與下載頁面之后關(guān)閉HTTP連接的做法不同,Pushlet將一直保持HTTP流連接,并通過此連接將新數(shù)據(jù)源源不斷地推送到客戶端o Pushlet的基本思想是:在客戶端網(wǎng)頁主框架中包含了控制層框架和表現(xiàn)層框架,利用HTTP技術(shù),使控制層框架Framel與pushlet服務(wù)器保持一個HTTP流連接,接收來自服務(wù)器端的JavaScript代碼和數(shù)據(jù),利用JavaSc印t中包含的變化數(shù)據(jù)刷新表現(xiàn)層框架Frame2的內(nèi)容,這樣服務(wù)器即可將變化數(shù)據(jù)動態(tài)更新到客戶端網(wǎng)頁中。
3. Pushlet推技術(shù)的優(yōu)勢
在Java網(wǎng)絡(luò)應(yīng)用程序中,采用pushlet技術(shù)實現(xiàn)服務(wù)器通知客戶端的策略,與采用輪詢、服務(wù)器調(diào)用和消息機制這三種策略相比具有以下優(yōu)勢:
(1)采用Pushlet技術(shù)的網(wǎng)絡(luò)應(yīng)用程序具有很強的通用性。
(2)服務(wù)器與客戶端可以很好的實現(xiàn)同步,只要服務(wù)器發(fā)生變化,服務(wù)器都會將變化通知到客戶端。
(3)服務(wù)器與客戶端的網(wǎng)絡(luò)冗余數(shù)據(jù)很少,服務(wù)器只將變化的數(shù)據(jù)’·推’。到客戶端,客戶端不需要重載整個網(wǎng)頁,降低了網(wǎng)絡(luò)資源的消耗。
(4 ) Pushlet技術(shù)可以將服務(wù)器產(chǎn)生的數(shù)據(jù)直接集成到瀏覽器的動態(tài)網(wǎng)頁中,HTML和CSS(Cascading Style Sheet,層疊樣式表)都可以直接應(yīng)用。
( 5 ) Pushlet的客戶端負擔(dān)小。
(6)運用Pushlet技術(shù)的服務(wù)器是一種輕量級的服務(wù)器,不需要額外的服務(wù)器開發(fā)和維護。
( 7 ) Pushlet使用的協(xié)議簡單。
[1]
4、應(yīng)用程序的開發(fā)
Pushlet框架實質(zhì)上是實現(xiàn)了一個信息交換的過程。因此基于此框架開發(fā)的應(yīng)用程序一部分是用于生成信息和向框架發(fā)送信息,而另一部分則是用于接收信息,通常用瀏覽器來接收信息。因為發(fā)送者和接受者之間的使用的網(wǎng)絡(luò)協(xié)議是HTTP,可以用支持HTTP的任何一種編程或腳本語言開發(fā)。Pushlet的信息結(jié)構(gòu)由服務(wù)器端的事件類定義,事件是一個帶有主題標識符的信息,根據(jù)不同的客戶端,事件在發(fā)送時需要采用不同的編碼技術(shù),主要用到的編碼技術(shù)有JavaScript和XML}
4.1開發(fā)發(fā)送者
向Pushlet框架發(fā)送事件可以通過三種方式:直接使用發(fā)報機發(fā)送;遠程或本地使用Pushlet協(xié)議發(fā)送;使用事件源發(fā)送。
1.直接使用發(fā)報機發(fā)送
應(yīng)用程序通過發(fā)報機的getInstance}方法得到發(fā)報機對象,然后采用多播、單播、廣播三種方法中的一種來播送事件,三種播送方法的調(diào)用代碼如下:
Dispatcher.getInstance0.multicast0;//多播
Dispatcher.getInstance0.unicasl0;//單播
Dispatcher.getInstance0.broadcast0;//廣播
而向Pushlet框架發(fā)送事件的其他兩個方法,實質(zhì)上最終使用的還是發(fā)報機的播送方法。但是要使用發(fā)報機,則要求調(diào)用發(fā)報機的類需要和發(fā)報機在同一個類加載器中。如果發(fā)送者在另一個網(wǎng)絡(luò)應(yīng)用程序中,那么可以使用Pushlet協(xié)議或者將Pushlet框架中的所有Java文件打包成JAR文件放在系統(tǒng)類路徑中,而且這個JAR文件還可以當(dāng)做Tomcat服務(wù)器中的一個共享類庫。
2.使用事件源發(fā)送
開發(fā)事件源需要創(chuàng)建一個事件源類,這個事件源類必須實現(xiàn)EventSource接口或擴展EventPullSource類。如果事件源類實現(xiàn)了EventSourc。接口,那么它需要實現(xiàn)把事件”推”到pushlet框架的方法;如果事件源類擴展了EventPullSource類,那么Pushlet框架會每隔一段時間自動地拉取事件源產(chǎn)生的事件。然后,把事件源類捆綁到TestEventPullSources類中,最后將這個事件源的類名存放到類路徑下的資源文件sources.properties中。將事件源捆綁到TestEventPullSources類中,并存放于資源文件中,目的是便于對事件源的創(chuàng)建和。當(dāng)Pushlet.服務(wù)器被載人時,事件源管理器就會在類路徑中尋找資源文件,并將文件中的事件源載人激活。
3.遠程或本地使用Pushlet協(xié)議發(fā)送
Pushlet框架提供了一個發(fā)布事件的接口,即p_publish}方法,應(yīng)用程序可以通過此方法發(fā)送事件。此外,Java客戶還可以通過pushletClient類發(fā)送。
4.2開發(fā)接收者
開發(fā)接收者需要明確接收者發(fā)出的pushlet請求以及接收者與服務(wù)器之間的交互方式,下面分別加以說明:
l.Pushlet請求
客戶要訂閱之前,首先必須向Pushlet服務(wù)器發(fā)送一個HTTP訂閱請求,這個請求至少包含兩個參數(shù):傳送事件采用的編碼技術(shù)和客戶訂閱的主題。
(1)傳送事件采用的編碼技術(shù)有四種
JavaScript的編碼技術(shù)用字符串’'js',表示;XML的編碼技術(shù)用字符串”xml',表示,這種編碼技術(shù)將事件組織成<<event>元素流;還有一種更嚴格的XML編碼技術(shù)用’'xml-strict"表示,它要求事件元素必須包含在完整的文檔中,這種編碼技術(shù)將事件組織成<event>元素包含在<pushlet>元素中;Java序列化對象的編碼技術(shù)用字符串’'ser"表示。
[2]
(2)客戶訂閱的主題
主題標識符是按照結(jié)構(gòu)化的”主題樹”組織的。當(dāng)客戶訂閱了某一層次的主題,那么就訂閱了屬于此主題之下的全部主題事件,例如定義了主題,那么將會收到所有主題事件。
2.客戶端與服務(wù)器的交互方式
客戶端與服務(wù)器的交互方式包括三種:”推”模式,”拉取”模式,”輪詢’‘模式!蓖啤蹦J绞侵冈诓恍枰嗛喛蛻舭l(fā)出請求的情況下,服務(wù)器可以將變化的事件信息主動的’‘推”到訂閱客戶端。一般情況下,動態(tài)網(wǎng)頁客戶采用的是這種模式,但是在某些情況下,采用這種傳輸模式也許不能正常工作,比如說由于代理服務(wù)器、Servlet引擎或客戶端瀏覽器的原因,那么就需要采用”拉取”模式!袄 蹦J绞侵缚蛻舳藭扛粢欢螘r間會請求”拉取”服務(wù)器端產(chǎn)生的事件信息。盡管這種模式下,客戶端的請求比較多,但還是比輪詢模式的效率高。因此,為了更好的完成客戶端宇服務(wù)器端的信息傳遞,在采用以’‘推’‘模式為主要信息傳遞方式的同時.還應(yīng)根據(jù)實際網(wǎng)絡(luò)情況.輔以”拉取“模式和”輪詢”模式。
4.3在網(wǎng)絡(luò)應(yīng)用程序中集成Pushlet
1.集成Pushlet需要的文件
(1) Pushlet的jar文件:WEB-INF/lib/pushlet.jar,包含T
Pushlet框架中所有的Java文件。
(2) Pushlet的配置文件和資源文件:WEB -INF/classes/pushlet.properties和WEB-INF/classes/sources.propertieso pushlet.properties是用來對Pushlet進行設(shè)置的,sources.pibperties是用來存放事件源的。
(3) Pushlet的客戶端類庫:lib/js-pushlet-client.js和lib/js-pushlet-net.html是為動態(tài)網(wǎng)頁客戶設(shè)計的;lib/ajax-pushlet-client.js是為Ajax客戶設(shè)計的。如果要使用Java小應(yīng)用程序或網(wǎng)絡(luò)應(yīng)用方面的Java客戶,還需要lib/pushletclient.jar文件。
(4) Pushlet的網(wǎng)絡(luò)配置文件:WEB-INF/web.xml能使Push-let服務(wù)器集成到網(wǎng)絡(luò)應(yīng)用中。
2.部署Pushlet文件
首先,把上面的文件放在網(wǎng)絡(luò)應(yīng)用程序相同的路徑下。然后,檢查一下網(wǎng)絡(luò)應(yīng)用程序中有沒有網(wǎng)絡(luò)配置文件,如果有的話,就必須把Pushlet網(wǎng)絡(luò)配置文件中的<servlet>和<servlet-mapping>這兩個元素復(fù)制到網(wǎng)絡(luò)應(yīng)用程序中的網(wǎng)絡(luò)配置文件中,因為網(wǎng)絡(luò)應(yīng)用程序中能有一個網(wǎng)絡(luò)配置文件。
最后要對事件源進行修改。如果不需要Pushlet框架中提供的事件源,那么就在pushlei的配置文件中將事件源失效,即將sources.activate=tme改為sources.activate=falseo
5.結(jié)束語
綜上所述,服務(wù)器推技術(shù)的應(yīng)用無論是對網(wǎng)絡(luò)用戶、網(wǎng)站員還是對Internet網(wǎng)自身的健康發(fā)展均有著積極的意義。運用服務(wù)器推技術(shù)進行的應(yīng)用程序開發(fā),一方面可降低重復(fù)無關(guān)的網(wǎng)絡(luò)信息傳遞,另一方面瀏覽器可以定期檢查更新信息,自動下載緩存新內(nèi)容.使用戶可以離線瀏覽。
[3]
【淺談基于Pushlet推技術(shù)的網(wǎng)絡(luò)應(yīng)用程序開發(fā)的研究】相關(guān)文章:
淺談基于知識的網(wǎng)格技術(shù)應(yīng)用研究03-02
基于Linux的信息發(fā)布終端網(wǎng)絡(luò)通信技術(shù)的研究03-07
淺談基于網(wǎng)絡(luò)視頻點播的多校區(qū)錄像教學(xué)模式的研究03-08
基于網(wǎng)絡(luò)的遠程測控系統(tǒng)的研究03-07
基于探針與NetFlow的高速網(wǎng)絡(luò)流量監(jiān)測技術(shù)的研究與實現(xiàn)03-07