基于Eclipse的對(duì)等通信方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,具體涉及一種基于Eclipse的對(duì)等通信方法。
【背景技術(shù)】
[0002]Eclipse是一個(gè)開放源代碼的、主要基于Java的可擴(kuò)展開發(fā)平臺(tái)。就其本身而言,它只是一個(gè)框架和一組服務(wù),用于通過(guò)插件組件構(gòu)建開發(fā)環(huán)境。
[0003]從Eclipse3.0 開始,Eclipse 中的插件機(jī)制通過(guò) OSGi (Open Service GatewayInitiative,開放服務(wù)網(wǎng)關(guān),一種以Java為技術(shù)平臺(tái)的動(dòng)態(tài)模塊化規(guī)范)框架來(lái)實(shí)現(xiàn)。一個(gè)Eclipse插件等同于一個(gè)OSGi的Bundle。創(chuàng)建一個(gè)Eclipse插件,既可以采用基于擴(kuò)展點(diǎn)的方式,又可以采用基于OSGi的Bundle概念。與之相關(guān),插件間的通信方式也較為多樣,其中就包括了采用超文本傳送協(xié)議(HTTP協(xié)議)進(jìn)行通信。而嵌入式Web服務(wù)器可以以O(shè)SGI Bundle的形式,作為插件成為Eclipse開發(fā)環(huán)境的有機(jī)組成部分。
[0004]目前,在分布式開發(fā)環(huán)境中,均采用典型的C/S(Client/Server,客戶-服務(wù)模式)結(jié)構(gòu),由客戶端發(fā)起請(qǐng)求,服務(wù)端接收請(qǐng)求,進(jìn)行處理并進(jìn)行應(yīng)答。由于客戶-服務(wù)通信是一次同步過(guò)程,這就使得某些較為復(fù)雜的事務(wù),其運(yùn)行結(jié)果和運(yùn)行時(shí)間難以估算,需要客戶端頻繁發(fā)起查詢請(qǐng)求,造成服務(wù)端的計(jì)算資源和網(wǎng)絡(luò)資源的浪費(fèi),以及處理結(jié)果的反饋存在延時(shí)。
[0005]而且,目前分布式開發(fā)環(huán)境客戶端采用輪詢的方式來(lái)獲取數(shù)據(jù),客戶端定時(shí)向服務(wù)器發(fā)送socket請(qǐng)求,服務(wù)器接到請(qǐng)求后需馬上處理請(qǐng)求,響應(yīng)信息并關(guān)閉連接。這種技術(shù)的缺點(diǎn)在于存在著大量的在業(yè)務(wù)上無(wú)用的請(qǐng)求,僅僅是為了查詢某次請(qǐng)求的狀態(tài),對(duì)帶寬和服務(wù)器資源造成了相當(dāng)?shù)睦速M(fèi)。每次狀態(tài)查詢之間總有物理上的時(shí)間間隔,這就造成了處理結(jié)果響應(yīng)的不及時(shí)。另外,由于發(fā)送的是socket請(qǐng)求,需要對(duì)傳輸?shù)臄?shù)據(jù)進(jìn)行解析,進(jìn)而轉(zhuǎn)化為應(yīng)用級(jí)的數(shù)據(jù),存在著協(xié)議標(biāo)準(zhǔn)不確定,接口描述不規(guī)范的問(wèn)題,從而引入了諸多不穩(wěn)定的因素,難以調(diào)試和維護(hù)。
【發(fā)明內(nèi)容】
[0006]本發(fā)明所要解決的技術(shù)問(wèn)題是針對(duì)現(xiàn)有技術(shù)中存在的分布式開發(fā)環(huán)境中客戶-服務(wù)通信過(guò)程的高效和實(shí)時(shí)性問(wèn)題,提供一種針對(duì)分布式開發(fā)環(huán)境的高效、實(shí)時(shí)的客戶-服務(wù)通信技術(shù)。
[0007]根據(jù)本發(fā)明,提供了一種基于Eclipse的對(duì)等通信方法,其中,在Eclipse客戶端中集成一個(gè)Web服務(wù)器插件,以用于對(duì)外提供Http服務(wù);在服務(wù)端中集成用于對(duì)所述Eclipse客戶端的Web服務(wù)器插件進(jìn)行調(diào)用的Http客戶端插件;在服務(wù)端處理完所述Eclipse客戶端的請(qǐng)求后,在不等待接收所述Eclipse客戶端的狀態(tài)查詢請(qǐng)求的情況下,直接把結(jié)果數(shù)據(jù)經(jīng)由自身的Http客戶端插件通過(guò)調(diào)用所述Eclipse客戶端的服務(wù)傳遞給所述Eclipse客戶端。
[0008]優(yōu)選地,所述基于Eclipse的對(duì)等通信方法包括:
[0009]第一步驟:選擇嵌入式web服務(wù)器插件的部署方式;
[0010]第二步驟:按照選擇的部署方式在Eclipse客戶端中集成Web服務(wù)器插件;
[0011]第三步驟:在服務(wù)端中提供Web服務(wù)器插件模塊作為Http客戶端插件;
[0012]第四步驟:通過(guò)事件機(jī)制提供插件間的通信。
[0013]優(yōu)選地,第二步驟包括:
[0014]添加依賴項(xiàng);
[0015]提供一個(gè)自定義的JettyServer類;
[0016]注冊(cè)一個(gè)Servlet (NotifyServlet),用于接收從遠(yuǎn)程發(fā)過(guò)來(lái)的消息;
[0017]將消息標(biāo)志解析成各種事件進(jìn)行分發(fā)。
[0018]優(yōu)選地,添加的依賴項(xiàng)為org.eclipse, equinox, http, jetty。
[0019]優(yōu)選地,第四步驟包括:
[0020]將Web服務(wù)器插件模塊作為一個(gè)事件源,該Web服務(wù)器插件模塊中的操作作為事件,業(yè)務(wù)模塊作為事件監(jiān)聽者;
[0021 ] 當(dāng)業(yè)務(wù)模塊被加載時(shí),業(yè)務(wù)模塊向Web服務(wù)器插件模塊注冊(cè);
[0022]注冊(cè)成功之后,一旦Web服務(wù)器插件模塊中有業(yè)務(wù)模塊感興趣的事件發(fā)生,Web服務(wù)器插件模塊便會(huì)將事件通知給監(jiān)聽者。
[0023]優(yōu)選地,在第一步驟中,選擇“Servlet Container in OSGi”部署方式。
[0024]優(yōu)選地,在第二步驟中,選擇Jetty服務(wù)器以一個(gè)Bundle的方式集成于OSGi框架中。
[0025]本發(fā)明的基于Eclipse的對(duì)等通信技術(shù),將客戶端作為一個(gè)輕量的Web服務(wù)器,利用了客戶端所在物理機(jī)器的計(jì)算資源,減少了網(wǎng)絡(luò)帶寬的占用和對(duì)服務(wù)器計(jì)算資源的浪費(fèi),提供了實(shí)時(shí)的計(jì)算/處理結(jié)果反饋,并且便于調(diào)試維護(hù)。
【附圖說(shuō)明】
[0026]結(jié)合附圖,并通過(guò)參考下面的詳細(xì)描述,將會(huì)更容易地對(duì)本發(fā)明有更完整的理解并且更容易地理解其伴隨的優(yōu)點(diǎn)和特征,其中:
[0027]圖1示意性地示出了根據(jù)本發(fā)明優(yōu)選實(shí)施例的基于Eclipse的對(duì)等通信方法的具體示例的流程圖。
[0028]需要說(shuō)明的是,附圖用于說(shuō)明本發(fā)明,而非限制本發(fā)明。注意,表示結(jié)構(gòu)的附圖可能并非按比例繪制。并且,附圖中,相同或者類似的元件標(biāo)有相同或者類似的標(biāo)號(hào)。
【具體實(shí)施方式】
[0029]為了使本發(fā)明的內(nèi)容更加清楚和易懂,下面結(jié)合具體實(shí)施例和附圖對(duì)本發(fā)明的內(nèi)容進(jìn)行詳細(xì)描述。
[0030]本發(fā)明旨在淡化客戶端和服務(wù)端的概念,在基于Eclipse的客戶端(簡(jiǎn)稱為Eclipse客戶端)中集成一個(gè)輕量級(jí)的Web服務(wù)器插件,以用于對(duì)外提供Http服務(wù);服務(wù)端中包含對(duì)所述Eclipse客戶端Web服務(wù)器插件進(jìn)行調(diào)用的Http客戶端插件。
[0031]在服務(wù)端處理完所述Eclipse客戶端的請(qǐng)求后,無(wú)需等待接收所述Eclipse客戶端的狀態(tài)查詢請(qǐng)求,直接把結(jié)果數(shù)據(jù)通過(guò)自身的Http客戶端插件通過(guò)調(diào)用述Eclipse客戶端的服務(wù)傳遞給所述Eclipse客戶端,從而避免無(wú)效請(qǐng)求,達(dá)到實(shí)時(shí)反饋的效果。
[0032]下面將結(jié)合附圖來(lái)描述本發(fā)明的具體處理示例。
[0033]圖1示意性地示出了根據(jù)本發(fā)明優(yōu)選實(shí)施例的基于Ecl