專利名稱:跨主機(jī)進(jìn)程間通信的方法、裝置及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及網(wǎng)絡(luò)通訊技術(shù),特別涉及基于分布式系統(tǒng)的一種跨主機(jī)進(jìn)程間通信的 方法、裝置及系統(tǒng)。
背景技術(shù):
在現(xiàn)有技術(shù)的分布式系統(tǒng)中包含多個(gè)主機(jī),且每個(gè)主機(jī)包含有多個(gè)進(jìn)程。目前,常 通過跨主機(jī)的進(jìn)程間通信的方式,以達(dá)到各主機(jī)相互協(xié)作的目的,從而完成分布式系統(tǒng)中 的任務(wù)。進(jìn)程間通信的模式可包括服務(wù)調(diào)用和消息通知,其中,服務(wù)調(diào)用為同步方式,參與者為服務(wù)提供進(jìn)程和服務(wù)調(diào)用進(jìn)程。服務(wù)調(diào)用進(jìn)程向 服務(wù)提供進(jìn)程發(fā)出服務(wù)的請求數(shù)據(jù)并等待服務(wù)進(jìn)程返回結(jié)果數(shù)據(jù),服務(wù)提供進(jìn)程接到請求 服務(wù)的數(shù)據(jù)后處理數(shù)據(jù)執(zhí)行服務(wù)過程并把處理的結(jié)果返回給服務(wù)調(diào)用進(jìn)程,服務(wù)調(diào)用進(jìn)程 得到結(jié)果后結(jié)束等待,則服務(wù)調(diào)用完成。消息通知為異步方式,參與者為消息發(fā)送進(jìn)程和消息接收進(jìn)程。當(dāng)有消息需要發(fā) 送時(shí),消息發(fā)送進(jìn)程發(fā)送消息到消息接收進(jìn)程,消息接收進(jìn)程收到消息并進(jìn)行處理,此時(shí)消 息發(fā)送進(jìn)程則不需要等待處理的結(jié)果。目前,進(jìn)程間通信一般都是采用基于IP協(xié)議的通信協(xié)議來實(shí)現(xiàn)的,所述基于IP協(xié) 議的通信協(xié)議,主要包括RMI通信協(xié)議、XML-RPC通信協(xié)議、Binary-RPC通信協(xié)議,SOAP通 信協(xié)議和CORBA通信協(xié)議,其中,RMI通信協(xié)議、XML-RPC通信協(xié)議、Binary-RPC通信協(xié)議和 SOAP通信協(xié)議只能支持服務(wù)調(diào)用,而不支持消息通知;雖然CORBA通信協(xié)議雖然能同時(shí)支 持服務(wù)調(diào)用和消息通知,但是在客戶端和服務(wù)端所建立的同一 TCP連接上無法實(shí)現(xiàn),而只 能在客戶端和服務(wù)端所建立的不同TCP連接上實(shí)現(xiàn),由于客戶端和服務(wù)端處于復(fù)雜的網(wǎng)絡(luò) 環(huán)境中,它們之間設(shè)有防火墻,而建立多個(gè)TCP連接來實(shí)現(xiàn)服務(wù)調(diào)用和消息通知,則會產(chǎn)生 多個(gè)TCP連接不便于穿越防火墻的問題,從而影響了客戶端和服務(wù)端進(jìn)行進(jìn)程間通信的效 率。
發(fā)明內(nèi)容
本發(fā)明實(shí)施例提供一種跨主機(jī)進(jìn)程間通信的方法、裝置及系統(tǒng),用以解決現(xiàn)有技 術(shù)中所存在的無法在同一 TCP連接上支持服務(wù)調(diào)用和消息通知的缺陷。本發(fā)明實(shí)施例一方面提供一種跨主機(jī)進(jìn)程間通信的方法,包括接收客戶端進(jìn)程引擎發(fā)送的數(shù)據(jù)包,所述數(shù)據(jù)包包括數(shù)據(jù)包類型和鍵值對組;通過解析所述數(shù)據(jù)包,獲取并識別所述數(shù)據(jù)包類型;當(dāng)識別所述數(shù)據(jù)包類型為服務(wù)請求類型時(shí),獲取所述鍵值對組,且所述鍵值對組 包括本次服務(wù)請求鍵值對和所需請求服務(wù)鍵值對子組;根據(jù)所需請求服務(wù)鍵值對子組,生成服務(wù)請求狀態(tài)鍵值對和服務(wù)返回?cái)?shù)據(jù)鍵值 對;
根據(jù)所述本次服務(wù)請求鍵值對、服務(wù)請求狀態(tài)鍵值對和服務(wù)返回?cái)?shù)據(jù)鍵值對,生 成服務(wù)返回?cái)?shù)據(jù)包并發(fā)送,所述服務(wù)返回?cái)?shù)據(jù)包的數(shù)據(jù)包類型為服務(wù)返回類型。本發(fā)明實(shí)施例另一方面提供一種跨主機(jī)進(jìn)程間通信的方法,包括接收服務(wù)調(diào)用代碼發(fā)送的服務(wù)請求數(shù)據(jù);根據(jù)所述服務(wù)請求數(shù)據(jù),生成數(shù)據(jù)包類型為服務(wù)請求類型的數(shù)據(jù)包;并向服務(wù)端進(jìn)程引擎發(fā)送所述服務(wù)請求類型的數(shù)據(jù)包,以進(jìn)行服務(wù)請求。本發(fā)明實(shí)施例另一方面提供一種跨主機(jī)進(jìn)程間通信的裝置,包括接收模塊,所述接收模塊用于接收客戶端進(jìn)程引擎發(fā)送的數(shù)據(jù)包,所述數(shù)據(jù)包包 括數(shù)據(jù)包類型和鍵值對組;獲取識別模塊,所述獲取識別模塊用于通過解析所述數(shù)據(jù)包,獲取并識別所述數(shù) 據(jù)包類型;獲取模塊,所述獲取模塊用于當(dāng)識別所述數(shù)據(jù)包類型為服務(wù)請求類型時(shí),獲取所 述鍵值對組,且所述鍵值對組包括本次服務(wù)請求鍵值對和所需請求服務(wù)鍵值對子組;生成模塊,所述生成模塊用于根據(jù)所需請求服務(wù)鍵值對子組,生成服務(wù)請求狀態(tài) 鍵值對和服務(wù)返回?cái)?shù)據(jù)鍵值對;處理模塊,所述處理模塊用于根據(jù)所述本次服務(wù)請求鍵值對、服務(wù)請求狀態(tài)鍵值 對和服務(wù)返回?cái)?shù)據(jù)鍵值對,生成服務(wù)返回?cái)?shù)據(jù)包并發(fā)送,所述服務(wù)返回?cái)?shù)據(jù)包的數(shù)據(jù)包類 型為服務(wù)返回類型。本發(fā)明實(shí)施例另一方面提供一種跨主機(jī)進(jìn)程間通信的裝置,包括第一接收模塊,所述第一接收模塊用于接收服務(wù)調(diào)用代碼發(fā)送的服務(wù)請求數(shù)據(jù);生成模塊,所述生成模塊用于根據(jù)所述服務(wù)請求數(shù)據(jù),生成數(shù)據(jù)包類型為服務(wù)請 求類型的數(shù)據(jù)包;發(fā)送模塊,所述發(fā)送模塊用于向服務(wù)端進(jìn)程引擎發(fā)送所述服務(wù)請求類型的數(shù)據(jù) 包,以進(jìn)行服務(wù)請求。本發(fā)明實(shí)施例另一方面提供一種跨主機(jī)進(jìn)程間通信的系統(tǒng),包括服務(wù)端和客戶 端,所述客戶端包括客戶端進(jìn)程引擎,所述服務(wù)端包括服務(wù)端進(jìn)程引擎,所述客戶端進(jìn)程引擎用于接收服務(wù)調(diào)用代碼發(fā)送的服務(wù)請求數(shù)據(jù);根據(jù)所述服務(wù) 請求數(shù)據(jù),生成數(shù)據(jù)包類型為服務(wù)請求類型的數(shù)據(jù)包;并向服務(wù)端進(jìn)程引擎發(fā)送所述服務(wù) 請求類型的數(shù)據(jù)包,以進(jìn)行服務(wù)請求;所述服務(wù)端進(jìn)程弓I擎用于接收客戶端進(jìn)程引擎發(fā)送的數(shù)據(jù)包,所述數(shù)據(jù)包包括數(shù) 據(jù)包類型和鍵值對組;通過解析所述數(shù)據(jù)包,獲取并識別所述數(shù)據(jù)包類型;當(dāng)識別所述數(shù) 據(jù)包類型為服務(wù)請求類型時(shí),獲取所述鍵值對組,且所述鍵值對組包括本次服務(wù)請求鍵值 對和所需請求服務(wù)鍵值對子組;根據(jù)所需請求服務(wù)鍵值對子組,生成服務(wù)請求狀態(tài)鍵值對 和服務(wù)返回?cái)?shù)據(jù)鍵值對;根據(jù)所述本次服務(wù)請求鍵值對、服務(wù)請求狀態(tài)鍵值對和服務(wù)返回 數(shù)據(jù)鍵值對,生成服務(wù)返回?cái)?shù)據(jù)包并發(fā)送,所述服務(wù)返回?cái)?shù)據(jù)包的數(shù)據(jù)包類型為服務(wù)返回 類型。本發(fā)明實(shí)施例一方面提供一種跨主機(jī)進(jìn)程間通信的方法,包括接收客戶端進(jìn)程引擎發(fā)送的數(shù)據(jù)包,所述數(shù)據(jù)包包括數(shù)據(jù)包類型和鍵值對組;通過解析所述數(shù)據(jù)包,獲取所述數(shù)據(jù)包類型并識別;
當(dāng)識別所述數(shù)據(jù)包類型為消息通知類型時(shí),獲取所述鍵值對組,所述鍵值對組包 括至少一個(gè)消息數(shù)據(jù)鍵值對,所述消息數(shù)據(jù)鍵值對包括消息數(shù)據(jù)類型鍵和消息值;判斷所述消息數(shù)據(jù)類型鍵是否在所述消息偵聽注冊表中,若是,則將并將所述消 息值發(fā)送給所述消息數(shù)據(jù)類型鍵所對應(yīng)的消息接收代碼。本發(fā)明實(shí)施例另一方面提供一種跨主機(jī)進(jìn)程間通信的方法,包括接收消息發(fā)送代碼發(fā)送的消息數(shù)據(jù);根據(jù)所述消息數(shù)據(jù),生成數(shù)據(jù)包類型為消息通知類型的數(shù)據(jù)包;并向所述服務(wù)端進(jìn)程引擎發(fā)送所述消息通知類型的數(shù)據(jù)包,以進(jìn)行消息通知。本發(fā)明實(shí)施例另一方面提供一種跨主機(jī)進(jìn)程間通信的裝置,包括接收模塊,所述接收模塊用于接收客戶端進(jìn)程引擎發(fā)送的數(shù)據(jù)包,所述數(shù)據(jù)包包 括數(shù)據(jù)包類型和鍵值對組;獲取識別模塊,所述獲取識別模塊用于通過解析所述數(shù)據(jù)包,獲取所述數(shù)據(jù)包類 型并識別;獲取模塊,所述獲取模塊用于當(dāng)識別所述數(shù)據(jù)包類型為消息通知類型時(shí),獲取所 述鍵值對組,所述鍵值對組包括至少一個(gè)消息數(shù)據(jù)鍵值對,所述消息數(shù)據(jù)鍵值對包括消息 數(shù)據(jù)類型鍵和消息值;判斷模塊,所述判斷模塊用于判斷所述消息數(shù)據(jù)類型鍵是否在所述消息偵聽注冊 表中;發(fā)送模塊,所述發(fā)送模塊用于當(dāng)所述判斷單元判斷出所述消息數(shù)據(jù)類型鍵在所述 消息偵聽注冊表中時(shí),將所述消息值發(fā)送給所述消息數(shù)據(jù)類型鍵所對應(yīng)的消息接收代碼。本發(fā)明實(shí)施例另一方面提供一種跨主機(jī)進(jìn)程間通信的裝置,包括接收模塊,所述接收模塊用于接收消息發(fā)送代碼發(fā)送的消息數(shù)據(jù);生成模塊,所述生成模塊用于根據(jù)所述消息數(shù)據(jù),生成數(shù)據(jù)包類型為消息通知類 型的數(shù)據(jù)包;發(fā)送模塊,所述發(fā)送模塊用于向所述服務(wù)端進(jìn)程弓I擎發(fā)送所述消息通知類型的數(shù) 據(jù)包,以進(jìn)行消息通知。本發(fā)明實(shí)施例另一方面提供一種跨主機(jī)進(jìn)程間通信的系統(tǒng),包括服務(wù)端和客戶端,所述客戶端包括客戶端進(jìn)程引擎,所述服務(wù)端包括服務(wù)端進(jìn)程 引擎,所述客戶端進(jìn)程引擎用于接收消息發(fā)送代碼發(fā)送的消息數(shù)據(jù);根據(jù)所述消息數(shù) 據(jù),生成數(shù)據(jù)包類型為消息通知類型的數(shù)據(jù)包;并向所述服務(wù)端進(jìn)程引擎發(fā)送所述消息通 知類型的數(shù)據(jù)包,以進(jìn)行消息通知。所述服務(wù)端進(jìn)程弓I擎用于接收客戶端進(jìn)程引擎發(fā)送的數(shù)據(jù)包,所述數(shù)據(jù)包包括數(shù) 據(jù)包類型和鍵值對組;通過解析所述數(shù)據(jù)包,獲取所述數(shù)據(jù)包類型并識別;當(dāng)識別所述數(shù) 據(jù)包類型為消息通知類型時(shí),獲取所述鍵值對組,所述鍵值對組包括至少一個(gè)消息數(shù)據(jù)鍵 值對,所述消息數(shù)據(jù)鍵值對包括消息數(shù)據(jù)類型鍵和消息值;判斷所述消息數(shù)據(jù)類型鍵是否 在所述消息偵聽注冊表中,若是,則將并將所述消息值發(fā)送給所述消息數(shù)據(jù)類型鍵所對應(yīng) 的消息接收代碼。本發(fā)明實(shí)施例的跨主機(jī)進(jìn)程間通信的方法、裝置及系統(tǒng),提供了一種跨主機(jī)進(jìn)程間通信的方式,通過接收客戶端進(jìn)程引擎發(fā)送的數(shù)據(jù)包,通過解析數(shù)據(jù)包,識別數(shù)據(jù)包所包 括的數(shù)據(jù)包類型為服務(wù)請求類型時(shí),利用服務(wù)提供代碼對數(shù)據(jù)包所包括的鍵值對組進(jìn)行處 理,或者識別數(shù)據(jù)包所包括的數(shù)據(jù)包類型為消息通知類型時(shí),利用消息接收代碼對數(shù)據(jù)包 所包括的鍵值對組進(jìn)行處理的技術(shù)方案,解決了現(xiàn)有技術(shù)中所存在的無法在同一 TCP連接 上支持服務(wù)調(diào)用和消息通知的缺陷,實(shí)現(xiàn)了在同一 TCP連接上支持服務(wù)調(diào)用和消息通知的 目的,由于一個(gè)TCP連接容易穿越客戶端和服務(wù)端的防火墻,因此提搞了服務(wù)端和客戶端 之間通信的交互效率。
為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例或現(xiàn) 有技術(shù)描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā) 明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以 根據(jù)這些附圖獲得其他的附圖。圖1為本發(fā)明實(shí)施例一磨 主機(jī)進(jìn)程間通信的方法流程圖2為本發(fā)明實(shí)施例二磨 主機(jī)進(jìn)程間通信的方法流程圖3為本發(fā)明實(shí)施例三磨 主機(jī)進(jìn)程間通信的方法流程圖4為本發(fā)明實(shí)施例四磨 主機(jī)進(jìn)程間通信的方法流程圖5為本發(fā)明實(shí)施例五磨 主機(jī)進(jìn)程間通信的裝置結(jié)構(gòu)示意圖6為本發(fā)明實(shí)施例六磨 主機(jī)進(jìn)程間通信的裝置結(jié)構(gòu)示意圖7為本發(fā)明實(shí)施例七磨 主機(jī)進(jìn)程間通信的裝置結(jié)構(gòu)示意圖8為本發(fā)明實(shí)施例八磨 主機(jī)進(jìn)程間通信的裝置結(jié)構(gòu)示意圖9為本發(fā)明實(shí)施例九磨 主機(jī)進(jìn)程間通信的系統(tǒng)結(jié)構(gòu)示意圖10為本發(fā)明實(shí)施例十!跨主機(jī)進(jìn)程間通信的系統(tǒng)結(jié)構(gòu)示意圖
圖11為本發(fā)明數(shù)據(jù)包的格式示意圖。
具體實(shí)施例方式為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例 中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是 本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員 在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。需要說明的是,在JAVA語言所開發(fā)的分布式系統(tǒng)中,本發(fā)明的客戶端和服務(wù)端首 先建立了一個(gè)TCP連接,接著在該TCP連接上進(jìn)行客戶端和服務(wù)端的跨主機(jī)進(jìn)程間通信。在本發(fā)明中,跨主機(jī)進(jìn)程間通信具體可為客戶端的服務(wù)調(diào)用進(jìn)程和服務(wù)端的服 務(wù)提供進(jìn)程之間的通信,或者是客戶端的消息發(fā)送進(jìn)程和服務(wù)端的消息接收進(jìn)程之間的通 信。并且跨主機(jī)進(jìn)程間通信可通過服務(wù)端進(jìn)程引擎和客戶端進(jìn)程引擎來實(shí)現(xiàn)。圖1為本發(fā)明實(shí)施例一跨主機(jī)進(jìn)程間通信的方法流程圖。在本實(shí)施例中,主要從 服務(wù)端進(jìn)程引擎?zhèn)葋碚f明客戶端的服務(wù)調(diào)用進(jìn)程和服務(wù)端的服務(wù)提供進(jìn)程之間的通信。如 圖1所示,本實(shí)施例跨主機(jī)進(jìn)程間通信的方法包括步驟101、接收客戶端進(jìn)程引擎發(fā)送的數(shù)據(jù)包,數(shù)據(jù)包包括數(shù)據(jù)包類型和鍵值對
服務(wù)端進(jìn)程引擎接收客戶端進(jìn)程引擎發(fā)送的數(shù)據(jù)包,服務(wù)端進(jìn)程引擎位于服務(wù) 端,客戶端進(jìn)程引擎位于客戶端。如圖11為本發(fā)明數(shù)據(jù)包的格式示意圖所示,服務(wù)端進(jìn)程 引擎和客戶端進(jìn)程引擎之間進(jìn)行通信所利用的數(shù)據(jù)包包括數(shù)據(jù)包類型和鍵值對組,鍵值對 組包括多個(gè)鍵值對,且鍵值對的形式為鍵=值,并且鍵值對組和數(shù)據(jù)包類型之間設(shè)有空格, 各鍵值對之間設(shè)有空格,具體地,在服務(wù)端進(jìn)程引擎和客戶端進(jìn)程引擎之間進(jìn)行通信所利 用的數(shù)據(jù)包是二進(jìn)制字節(jié)碼序列,并且符合下面定義(1)數(shù)據(jù)包的開始是由一個(gè)ASCII碼為’ { ‘的開始標(biāo)識字節(jié)組成的,數(shù)據(jù)包的結(jié) 束是由一個(gè)ASCII碼為’ } ‘的結(jié)束標(biāo)識字節(jié)組成的。(2)數(shù)據(jù)包中的鍵值對組是由開始標(biāo)識字節(jié)和結(jié)束標(biāo)識字節(jié)之間的而二進(jìn)制字節(jié) 組成。數(shù)據(jù)包中的鍵值對組不能出現(xiàn)單個(gè)的ASCII碼為’ { ‘和ASCII為’} ‘的字節(jié)數(shù)據(jù)。(3)若在鍵值對組中要使用ASCII碼為’ { ‘和/或ASCII為’ } ‘的字節(jié),該字節(jié) 要經(jīng)過轉(zhuǎn)碼操作。即如果原始數(shù)據(jù)中有ASCII碼為’ { ‘和/或ASCII為’} ‘的字節(jié),該原 始數(shù)據(jù)在轉(zhuǎn)換成符合該數(shù)據(jù)包格式的編碼過程中,所有ASCII碼為’ { ‘的字節(jié)將被替換成 兩個(gè)ASCII為’ { ‘的字節(jié),所有ASCII為’ } ‘的字節(jié)將被替換成兩個(gè)ASCII為’ } ‘的字 節(jié)。如果符合該數(shù)據(jù)包的鍵值對組中有兩個(gè)連續(xù)的ASCII碼為’ { ‘和/或有兩個(gè)連續(xù)的 ASCII為’} ‘的字節(jié),該符合該數(shù)據(jù)包的鍵值對組在轉(zhuǎn)換成原始數(shù)據(jù)的解碼過程中,所有連 續(xù)兩個(gè)ASCII碼為’ { ‘的字節(jié)將被替換成單個(gè)ASCII為’ { ‘的字節(jié),所有連續(xù)兩個(gè)ASCII 為’ } ‘的字節(jié)將被替換成單個(gè)ASCII為’ } ‘的字節(jié)。(4)數(shù)據(jù)包的格式為{包類型鍵值對1鍵值對2......鍵值對η}。(5)其中數(shù)據(jù)包類型的定義是以字母開頭的由字母和數(shù)字組成的小于16個(gè)字節(jié) 的ASCII碼字節(jié)。數(shù)據(jù)包類型可分為基本類型和擴(kuò)展類型。其中,基本類型包括服務(wù)請求 類型req、服務(wù)返回類型resp和消息通知類型msg。擴(kuò)展類型是指,基本類型定義之外的由 用戶定義的代表特定功能含義的ASCII串。(6)數(shù)據(jù)包中可以有0到η個(gè)鍵值對。鍵值對之間、鍵值對與包類型之間由ASCII 碼為空格的字節(jié)分隔。(7)鍵值對的格式如下鍵=值。其中鍵的定義是以字母開頭的由字母和數(shù)字組 成的小于16個(gè)字節(jié)的ASCII碼字節(jié),在各鍵值對中鍵不能重復(fù)。鍵后用ASCII碼為“=”的 字節(jié)碼分割鍵和值。(8)鍵值對中的值是滿足上面第3項(xiàng)描述的二進(jìn)制字節(jié)數(shù)據(jù)。(9)若鍵值對中值的二進(jìn)制字節(jié)數(shù)據(jù)中出現(xiàn)了 ASCII碼不是屏幕可見字符,該鍵 值對的鍵部分要變換為如下形式鍵%數(shù)值長度,其中鍵部分的定義符合第7項(xiàng)的描述,鍵 后跟ASCII碼為“ %,,的字節(jié)碼,“ %,,后跟該鍵值對值部分的字節(jié)長度,該長度用ASCII碼 描述的10進(jìn)制數(shù)字表示,使用該方式可以傳遞序列化成2進(jìn)制數(shù)據(jù)的Java對象。步驟102、通過解析數(shù)據(jù)包,獲取并識別數(shù)據(jù)包類型;將接收到的數(shù)據(jù)包通過java的反序列化技術(shù)進(jìn)行解析,獲取并識別該數(shù)據(jù)包的 數(shù)據(jù)包類型,由于在本實(shí)施例中,該數(shù)據(jù)包是客戶端進(jìn)程引擎發(fā)往服務(wù)端進(jìn)程引擎,因此數(shù) 據(jù)包類型可為服務(wù)請求類型req或消息通知類型msg。步驟103、當(dāng)識別數(shù)據(jù)包類型為服務(wù)請求類型時(shí),獲取鍵值對組,且鍵值對組包括本次服務(wù)請求鍵值對和所需請求服務(wù)鍵值對子組;由于在本實(shí)施例中數(shù)據(jù)包是在服務(wù)調(diào)用進(jìn)程和服務(wù)提供進(jìn)程之間進(jìn)行通信,因此 識別該數(shù)據(jù)包的數(shù)據(jù)包類型應(yīng)該為服務(wù)請求類型req,此時(shí),獲取該數(shù)據(jù)包所包括的鍵值對 組,且該鍵值對組包括本次服務(wù)請求鍵值對和所需請求服務(wù)鍵值對子組,其中,本次服務(wù)請求鍵值對為ID = η,η為正整數(shù),ID為本次服務(wù)請求鍵值對的鍵,η為 本次服務(wù)請求鍵值對的值,η表示客戶端第η次進(jìn)行服務(wù)請求,且客戶端每次生成的ID = η是唯一的;在客戶端和服務(wù)端同一 TCP連接下的同一調(diào)用服務(wù)過程,本次服務(wù)請求鍵值對 ID = η可唯一標(biāo)示服務(wù)調(diào)用進(jìn)程和服務(wù)提供進(jìn)程之間傳遞的服務(wù)請求類型數(shù)據(jù)包或服務(wù) 返回類型數(shù)據(jù)包,即本次服務(wù)請求鍵值對ID = η可唯一標(biāo)示一客戶端和服務(wù)端的服務(wù)調(diào)用 過程;所需請求服務(wù)鍵值對子組包括所需請求服務(wù)標(biāo)識鍵值對,所需請求服務(wù)標(biāo)識鍵值 對包括所需請求服務(wù)標(biāo)識鍵和第一值,所需請求服務(wù)標(biāo)識鍵=第一值,且所需請求服務(wù)標(biāo) 識鍵表示客戶端所需請求的服務(wù),第一值表示客戶端請求該服務(wù)的次數(shù);具體地,該服務(wù)請 求數(shù)據(jù)包可為Ireq =ID = 5add = 3},其中,add = 3為請求服務(wù)標(biāo)識鍵值,add為請求服務(wù) 標(biāo)識鍵值對的鍵,3為請求服務(wù)標(biāo)識鍵值對的值,整個(gè)數(shù)據(jù)包表示客戶端向服務(wù)端進(jìn)行的本 次服務(wù)請求為第5次,且進(jìn)行對add的服務(wù)請求為第3次。進(jìn)一步地,所需請求服務(wù)鍵值對子組有時(shí)候還包括至少一個(gè)服務(wù)參數(shù)鍵值對,且 服務(wù)參數(shù)鍵值對包括服務(wù)參數(shù)類型鍵和第四值,服務(wù)參數(shù)類型鍵=第四值,具體地,該服務(wù) 請求數(shù)據(jù)包可為Ireq =ID = 5 add = 3 int a = 10 intb = 20},其中包括了兩個(gè)服務(wù)參 數(shù)鍵值對int a = 10和int b = 20,以服務(wù)參數(shù)鍵值對int a = 10為例,int a為服務(wù)參 數(shù)鍵值對的鍵,表示變量a為整型,10為服務(wù)參數(shù)鍵值對的值,因此整個(gè)數(shù)據(jù)包表示客戶端 向服務(wù)端進(jìn)行的本次服務(wù)請求為第5次,且進(jìn)行對add的服務(wù)請求為第3次,且add的服務(wù) 請求為對整型的兩個(gè)數(shù)進(jìn)行相加。步驟104、根據(jù)所需請求服務(wù)鍵值對子組,生成服務(wù)請求狀態(tài)鍵值對和服務(wù)返回?cái)?shù) 據(jù)鍵值對;其中,服務(wù)請求狀態(tài)鍵值對包括狀態(tài)標(biāo)識鍵Stat和第二值,且Stat =第二值,服 務(wù)請求狀態(tài)鍵值對表示本次請求成功與否;服務(wù)返回?cái)?shù)據(jù)鍵值對包括結(jié)果標(biāo)識鍵result 和第三值,且result =第三值,服務(wù)返回?cái)?shù)據(jù)鍵值對表示從服務(wù)提供代碼所獲得的返回消 息;當(dāng)所需請求服務(wù)鍵值對子組僅包括所需請求服務(wù)標(biāo)識鍵值對時(shí),根據(jù)所需請求服 務(wù)標(biāo)識鍵值對,查詢服務(wù)注冊表中是否存在所需請求服務(wù)標(biāo)識鍵,若是,則通過調(diào)用服務(wù)提 供代碼,獲取調(diào)用服務(wù)提供代碼所返回的服務(wù)結(jié)果;并生成第二值為成功標(biāo)識OK的服務(wù)請 求狀態(tài)鍵值對Stat = ok,和第三值為服務(wù)結(jié)果的服務(wù)返回?cái)?shù)據(jù)鍵值對result =服務(wù)結(jié)果; 若服務(wù)注冊表中不存在所需請求服務(wù)標(biāo)識鍵,則生成第二值為失敗標(biāo)識error的服務(wù)請求 狀態(tài)鍵值對stat = error和第三值為錯誤信息的服務(wù)返回?cái)?shù)據(jù)鍵值對result =錯誤信 肩、ο該查詢服務(wù)注冊表在服務(wù)端生成,并保存在服務(wù)端進(jìn)程引擎中,具體地,由服務(wù)注 冊代碼將服務(wù)端所包含的服務(wù)注冊到服務(wù)端進(jìn)程引擎以在服務(wù)端進(jìn)程引擎中生成服務(wù)注 冊表;
進(jìn)一步地,當(dāng)所需請求服務(wù)鍵值對子組包括所需請求服務(wù)標(biāo)識鍵值對和至少一個(gè) 服務(wù)參數(shù)鍵值對時(shí),則根據(jù)所需請求服務(wù)標(biāo)識鍵值對,查詢服務(wù)注冊表中是否存在所需請 求服務(wù)標(biāo)識鍵,并判斷服務(wù)參數(shù)類型鍵和第四值是否匹配合法,例如一個(gè)服務(wù)參數(shù)鍵值對 Sint a = 10,則判斷10是否是整型;若所需請求服務(wù)標(biāo)識鍵存在于服務(wù)注冊表中,且服務(wù) 參數(shù)類型鍵和第四值匹配合法,則通過調(diào)用服務(wù)提供代碼,獲取服務(wù)提供代碼的返回消息; 若返回消息為服務(wù)結(jié)果,則生成第二值為成功標(biāo)識ok的服務(wù)請求狀態(tài)鍵值對stat = ok,和 第三值為服務(wù)結(jié)果的服務(wù)返回?cái)?shù)據(jù)鍵值對result =服務(wù)結(jié)果;若所需請求服務(wù)標(biāo)識鍵不存在于服務(wù)注冊表中和/或服務(wù)參數(shù)類型鍵和第四值 匹配不合法,則生成第二值為失敗標(biāo)識error的服務(wù)請求狀態(tài)鍵值對stat = error和第三 值為錯誤信息的服務(wù)返回?cái)?shù)據(jù)鍵值對result =錯誤信息;若獲取到服務(wù)提供代碼所返回的錯誤信息,則生成第二值為失敗標(biāo)識的服務(wù)請求 狀態(tài)鍵值對stat = error和第三值為錯誤信息的服務(wù)返回?cái)?shù)據(jù)鍵值對result =錯誤信 肩、ο步驟105、根據(jù)本次服務(wù)請求鍵值對、服務(wù)請求狀態(tài)鍵值對和服務(wù)返回?cái)?shù)據(jù)鍵值 對,生成服務(wù)返回?cái)?shù)據(jù)包并發(fā)送,服務(wù)返回?cái)?shù)據(jù)包的數(shù)據(jù)包類型為服務(wù)返回類型。服務(wù)端進(jìn)程引擎通過java的序列化技術(shù),封裝本次服務(wù)請求鍵值對ID = n,服 務(wù)請求狀態(tài)鍵值對,服務(wù)返回?cái)?shù)據(jù)鍵值對以及服務(wù)返回類型resp,以生成返回?cái)?shù)據(jù)包并發(fā) 送至客戶端進(jìn)程引擎,且所生成的返回?cái)?shù)據(jù)包的鍵值對組包括本次服務(wù)請求鍵值對ID = n,服務(wù)請求狀態(tài)鍵值對,服務(wù)返回?cái)?shù)據(jù)鍵值對,具體地,服務(wù)返回?cái)?shù)據(jù)包為Iresp =ID = 1 result = 30 stat = ok}或{resp :ID = 1 result =錯誤f言;窗、stat = error}。本發(fā)明實(shí)施例的跨主機(jī)進(jìn)程間通信的方法,在一個(gè)TCP連接上的服務(wù)端進(jìn)程引擎 側(cè),服務(wù)端進(jìn)程引擎通過獲取并識別客戶端進(jìn)程引擎發(fā)送的數(shù)據(jù)包的數(shù)據(jù)包類型,當(dāng)數(shù)據(jù) 包類型為服務(wù)請求類型時(shí),進(jìn)行服務(wù)客戶端的服務(wù)調(diào)用進(jìn)程和服務(wù)端的服務(wù)提供進(jìn)程之間 的通信,解決了現(xiàn)有技術(shù)中所存在的無法在同一 TCP連接上支持服務(wù)調(diào)用和消息通知的缺 陷,實(shí)現(xiàn)了在同一 TCP連接上支持服務(wù)調(diào)用和消息通知的目的,由于一個(gè)TCP連接容易穿越 客戶端和服務(wù)端的防火墻,因此提搞了服務(wù)端和客戶端之間通信的交互效率。對應(yīng)于上述實(shí)施例一是從服務(wù)端進(jìn)程引擎?zhèn)葋碚f明客戶端的服務(wù)調(diào)用進(jìn)程和服 務(wù)端的服務(wù)提供進(jìn)程之間的通信,本實(shí)施例主要從客戶端進(jìn)程引擎?zhèn)葋碚f明客戶端的服務(wù) 調(diào)用進(jìn)程和服務(wù)端的服務(wù)提供進(jìn)程之間的通信。圖2為本發(fā)明實(shí)施例二跨主機(jī)進(jìn)程間通信 的方法流程圖。如圖2所示,本實(shí)施例跨主機(jī)進(jìn)程間通信的方法包括步驟201、接收服務(wù)調(diào)用代碼發(fā)送的服務(wù)請求數(shù)據(jù);客戶端進(jìn)程引擎接收客戶端的服務(wù)調(diào)用代碼發(fā)送的服務(wù)請求數(shù)據(jù),具體地,服務(wù) 請求數(shù)據(jù)表示向服務(wù)端請求整型數(shù)10和20的add服務(wù),并且客戶端進(jìn)程引擎進(jìn)行統(tǒng)計(jì)本 次服務(wù)請求是客戶端向服務(wù)端進(jìn)行第5次服務(wù)請求,且進(jìn)行對add的服務(wù)請求為第3次。步驟202、根據(jù)服務(wù)請求數(shù)據(jù),生成數(shù)據(jù)包類型為服務(wù)請求類型的數(shù)據(jù)包;客戶端進(jìn)程引擎將服務(wù)請求數(shù)據(jù)通過java的序列化技術(shù)進(jìn)行封裝,以生成數(shù)據(jù) 包類型為服務(wù)請求類型rep的數(shù)據(jù)包,具體地,發(fā)送上述實(shí)施例一中的服務(wù)請求數(shù)據(jù)包為 {req JD = 5 add = 3 int a = 10 int b = 20};步驟203、并向服務(wù)端進(jìn)程引擎發(fā)送服務(wù)請求類型的數(shù)據(jù)包,以進(jìn)行服務(wù)請求。
進(jìn)一步地,本實(shí)施例跨主機(jī)進(jìn)程間通信的方法還包括接收服務(wù)端進(jìn)程引擎返回的服務(wù)返回?cái)?shù)據(jù)包,服務(wù)返回?cái)?shù)據(jù)包包括本次服務(wù)請求 鍵值對ID = η、服務(wù)請求狀態(tài)鍵值對和服務(wù)返回?cái)?shù)據(jù)鍵值對;通過java的反序列化技術(shù)解析服務(wù)返回?cái)?shù)據(jù)包,獲取服務(wù)請求狀態(tài)鍵值對和服 務(wù)返回?cái)?shù)據(jù)鍵值對;若服務(wù)請求狀態(tài)鍵值對所包括的第二值為成功標(biāo)識ok,則將服務(wù)返回?cái)?shù)據(jù)鍵值對 所包括的第三值發(fā)送給服務(wù)調(diào)用代碼,以使服務(wù)調(diào)用代碼獲得其所發(fā)起的服務(wù)調(diào)用的返回 fn息ο本發(fā)明實(shí)施例的跨主機(jī)進(jìn)程間通信的方法,通過在一個(gè)TCP連接上,客戶端進(jìn)程 引擎將服務(wù)請求數(shù)據(jù)封裝成服務(wù)請求類型的數(shù)據(jù)包并發(fā)送的技術(shù)方案,解決了現(xiàn)有技術(shù)中 所存在的無法在同一 TCP連接上支持服務(wù)調(diào)用和消息通知的缺陷,實(shí)現(xiàn)了在同一 TCP連接 上支持服務(wù)調(diào)用和消息通知的目的,由于一個(gè)TCP連接容易穿越客戶端和服務(wù)端的防火 墻,因此提搞了服務(wù)端和客戶端之間通信的交互效率。在本實(shí)施例中,跨主機(jī)進(jìn)程間通信具體可為,客戶端的服務(wù)調(diào)用進(jìn)程和服務(wù)端的 服務(wù)提供進(jìn)程之間的通信,并且服務(wù)調(diào)用進(jìn)程和服務(wù)提供進(jìn)程之間進(jìn)行通信可利用服務(wù)端 進(jìn)程引擎和客戶端進(jìn)程引擎來實(shí)現(xiàn),其中,在服務(wù)提供進(jìn)程側(cè)的跨主機(jī)進(jìn)程間通信的方法, 由以下敘述來說明。圖3為本發(fā)明實(shí)施例三跨主機(jī)進(jìn)程間通信的方法流程圖。在本實(shí)施例中,主要從 服務(wù)端進(jìn)程弓I擎?zhèn)葋碚f明客戶端的消息發(fā)送進(jìn)程和服務(wù)端的消息接收進(jìn)程之間的通信。如 圖3所示,本實(shí)施跨主機(jī)進(jìn)程間通信的方法包括步驟301、接收客戶端進(jìn)程引擎發(fā)送的數(shù)據(jù)包,數(shù)據(jù)包包括數(shù)據(jù)包類型和鍵值對 組;服務(wù)端進(jìn)程引擎接收客戶端進(jìn)程引擎發(fā)送的數(shù)據(jù)包,服務(wù)端進(jìn)程引擎位于服務(wù) 端,客戶端進(jìn)程引擎位于客戶端。如圖11為本發(fā)明數(shù)據(jù)包的格式示意圖所示,服務(wù)端進(jìn)程 引擎和客戶端進(jìn)程引擎之間進(jìn)行通信所利用的數(shù)據(jù)包包括數(shù)據(jù)包類型和鍵值對組,鍵值對 組包括多個(gè)鍵值對,且鍵值對的形式為鍵=值,并且鍵值對組和數(shù)據(jù)包類型之間設(shè)有空格, 各鍵值對之間設(shè)有空格,具體地,在服務(wù)端進(jìn)程引擎和客戶端進(jìn)程引擎之間進(jìn)行通信所利 用的數(shù)據(jù)包是二進(jìn)制字節(jié)碼序列,并且符合下面定義(1)數(shù)據(jù)包的開始是由一個(gè)ASCII碼為’ { ‘的開始標(biāo)識字節(jié)組成的,數(shù)據(jù)包的結(jié) 束是由一個(gè)ASCII碼為’ } ‘的結(jié)束標(biāo)識字節(jié)組成的。(2)數(shù)據(jù)包中的鍵值對組是由開始標(biāo)識字節(jié)和結(jié)束標(biāo)識字節(jié)之間的而二進(jìn)制字節(jié) 組成。數(shù)據(jù)包中的鍵值對組不能出現(xiàn)單個(gè)的ASCII碼為’ { ‘和ASCII為’} ‘的字節(jié)數(shù)據(jù)。(3)若在鍵值對組中要使用ASCII碼為,{ ‘和/或ASCII為’ } ‘的字節(jié),該字節(jié) 要經(jīng)過轉(zhuǎn)碼操作。即如果原始數(shù)據(jù)中有ASCII碼為’ { ‘和/或ASCII為’} ‘的字節(jié),該原 始數(shù)據(jù)在轉(zhuǎn)換成符合該數(shù)據(jù)包格式的編碼過程中,所有ASCII碼為’ { ‘的字節(jié)將被替換成 兩個(gè)ASCII為’ { ‘的字節(jié),所有ASCII為’ } ‘的字節(jié)將被替換成兩個(gè)ASCII為’ } ‘的字 節(jié)。如果符合該數(shù)據(jù)包的鍵值對組中有兩個(gè)連續(xù)的ASCII碼為’ { ‘和/或有兩個(gè)連續(xù)的 ASCII為’} ‘的字節(jié),該符合該數(shù)據(jù)包的鍵值對組在轉(zhuǎn)換成原始數(shù)據(jù)的解碼過程中,所有連 續(xù)兩個(gè)ASCII碼為’ { ‘的字節(jié)將被替換成單個(gè)ASCII為’ { ‘的字節(jié),所有連續(xù)兩個(gè)ASCII為’ } ‘的字節(jié)將被替換成單個(gè)ASCII為’ } ‘的字節(jié)。(4)數(shù)據(jù)包的格式為{包類型鍵值對1鍵值對2......鍵值對η}。(5)其中數(shù)據(jù)包類型的定義是以字母開頭的由字母和數(shù)字組成的小于16個(gè)字節(jié) 的ASCII碼字節(jié)。數(shù)據(jù)包類型可分為基本類型和擴(kuò)展類型。其中,基本類型包括服務(wù)請求 類型req、服務(wù)返回類型resp和消息通知類型msg。擴(kuò)展類型是指,基本類型定義之外的由 用戶定義的代表特定功能含義的ASCII串。(6)數(shù)據(jù)包中可以有0到η個(gè)鍵值對。鍵值對之間、鍵值對與包類型之間由ASCII 碼為空格的字節(jié)分隔。(7)鍵值對的格式如下鍵=值。其中鍵的定義是以字母開頭的由字母和數(shù)字組 成的小于16個(gè)字節(jié)的ASCII碼字節(jié),在各鍵值對中鍵不能重復(fù)。鍵后用ASCII碼為“=”的 字節(jié)碼分割鍵和值。(8)鍵值對中的值是滿足上面第3項(xiàng)描述的二進(jìn)制字節(jié)數(shù)據(jù)。(9)若鍵值對中值的二進(jìn)制字節(jié)數(shù)據(jù)中出現(xiàn)了 ASCII碼不是屏幕可見字符,該鍵 值對的鍵部分要變換為如下形式鍵%數(shù)值長度,其中鍵部分的定義符合第7項(xiàng)的描述,鍵 后跟ASCII碼為“ %,,的字節(jié)碼,“ %,,后跟該鍵值對值部分的字節(jié)長度,該長度用ASCII碼 描述的10進(jìn)制數(shù)字表示,使用該方式可以傳遞序列化成2進(jìn)制數(shù)據(jù)的Java對象。步驟302、通過解析數(shù)據(jù)包,獲取數(shù)據(jù)包類型并識別;將接收到的數(shù)據(jù)包通過java的反序列化技術(shù)進(jìn)行解析,獲取并識別該數(shù)據(jù)包的 數(shù)據(jù)包類型,由于在本實(shí)施例中,該數(shù)據(jù)包是客戶端進(jìn)程引擎發(fā)往服務(wù)端進(jìn)程引擎,因此數(shù) 據(jù)包類型可為服務(wù)請求類型req或消息通知類型msg。步驟303、當(dāng)識別數(shù)據(jù)包類型為消息通知類型時(shí),獲取鍵值對組,鍵值對組包括至 少一個(gè)消息數(shù)據(jù)鍵值對,消息數(shù)據(jù)鍵值對包括消息數(shù)據(jù)類型鍵和消息值;由于在本實(shí)施例中數(shù)據(jù)包是在消息發(fā)送進(jìn)程和消息接收進(jìn)程之間進(jìn)行通信,因此 識別該數(shù)據(jù)包的數(shù)據(jù)包類型應(yīng)該為消息通知類型msg,此時(shí),獲取該數(shù)據(jù)包所包括的鍵值對 組,且該鍵值對組包括至少一個(gè)消息數(shù)據(jù)鍵值對,消息數(shù)據(jù)鍵值對包括消息數(shù)據(jù)類型鍵和 消息值,并且消息數(shù)據(jù)類型鍵=消息值,消息數(shù)據(jù)類型鍵表示客戶端進(jìn)程引擎所發(fā)送消息 數(shù)據(jù)的類型,消息值為消息數(shù)據(jù)的具體內(nèi)容,具體地,該服務(wù)請求數(shù)據(jù)包可為Imsg 消息數(shù) 據(jù)類型鍵=消息值}。步驟304、判斷消息數(shù)據(jù)類型鍵是否在消息偵聽注冊表中,若是,則將并將消息值 發(fā)送給消息數(shù)據(jù)類型鍵所對應(yīng)的消息接收代碼。服務(wù)端進(jìn)程引擎判斷消息數(shù)據(jù)類型鍵是否在消息偵聽注冊表中,若是,說明服務(wù) 端進(jìn)程引擎正在偵聽該消息數(shù)據(jù)類型鍵所表示的消息數(shù)據(jù)類型,且則將并將消息值發(fā)送給 消息數(shù)據(jù)類型鍵所對應(yīng)的消息接收代碼,其中,該消息偵聽注冊表在服務(wù)端生成,并保存在 服務(wù)端進(jìn)程引擎中,具體地,由消息偵聽注冊代碼將服務(wù)端所需偵聽的消息數(shù)據(jù)類型注冊 到服務(wù)端進(jìn)程引擎,以在服務(wù)端進(jìn)程引擎中生成服務(wù)注冊表。本發(fā)明實(shí)施例的跨主機(jī)進(jìn)程間通信的方法,在一個(gè)TCP連接上的服務(wù)端進(jìn)程引擎 側(cè),服務(wù)端進(jìn)程引擎通過獲取并識別客戶端進(jìn)程引擎發(fā)送的數(shù)據(jù)包的數(shù)據(jù)包類型,當(dāng)數(shù)據(jù) 包類型為消息通知類型時(shí),進(jìn)行服務(wù)客戶端的服務(wù)調(diào)用進(jìn)程和服務(wù)端的服務(wù)提供進(jìn)程之間 的通信,解決了現(xiàn)有技術(shù)中所存在的無法在同一 TCP連接上支持服務(wù)調(diào)用和消息通知的缺陷,實(shí)現(xiàn)了在同一 TCP連接上支持服務(wù)調(diào)用和消息通知的目的,由于一個(gè)TCP連接容易穿越 客戶端和服務(wù)端的防火墻,因此提搞了服務(wù)端和客戶端之間通信的交互效率。對應(yīng)于上述實(shí)施例三是從服務(wù)端進(jìn)程引擎?zhèn)葋碚f明客戶端的消息發(fā)送進(jìn)程和服 務(wù)端的消息接收進(jìn)程之間的通信,本實(shí)施例主要從客戶端進(jìn)程引擎?zhèn)葋碚f明客戶端的消息 發(fā)送進(jìn)程和服務(wù)端的消息接收進(jìn)程之間的通信。圖4為本發(fā)明實(shí)施例四跨主機(jī)進(jìn)程間通信 的方法流程圖。如圖4所示,本實(shí)施例跨主機(jī)進(jìn)程間通信的方法包括步驟401、接收消息發(fā)送代碼發(fā)送的消息數(shù)據(jù);客戶端進(jìn)程引擎接收客戶端的接收消息發(fā)送代碼發(fā)送的消息數(shù)據(jù)。步驟402、根據(jù)消息數(shù)據(jù),生成數(shù)據(jù)包類型為消息通知類型的數(shù)據(jù)包;客戶端進(jìn)程引擎將消息數(shù)據(jù)通過java的序列化技術(shù)進(jìn)行封裝,以生成數(shù)據(jù)包類 型為消息通知類型msg的數(shù)據(jù)包,具體地,該服務(wù)請求數(shù)據(jù)包可為Imsg 消息數(shù)據(jù)類型鍵= 消息值}。步驟403、并向服務(wù)端進(jìn)程引擎發(fā)送消息通知類型的數(shù)據(jù)包,以進(jìn)行消息通知。本發(fā)明實(shí)施例的跨主機(jī)進(jìn)程間通信的方法,在一個(gè)TCP連接上,通過客戶端進(jìn)程 引擎將消息數(shù)據(jù)封裝成消息通知類型的數(shù)據(jù)包并發(fā)送的技術(shù)方案,解決了現(xiàn)有技術(shù)中所存 在的無法在同一 TCP連接上支持服務(wù)調(diào)用和消息通知的缺陷,實(shí)現(xiàn)了在同一 TCP連接上支 持服務(wù)調(diào)用和消息通知的目的,由于一個(gè)TCP連接容易穿越客戶端和服務(wù)端的防火墻,因 此提搞了服務(wù)端和客戶端之間通信的交互效率。圖5為本發(fā)明實(shí)施例五跨主機(jī)進(jìn)程間通信的裝置結(jié)構(gòu)示意圖。在本實(shí)施例中,主 要從服務(wù)端進(jìn)程引擎?zhèn)葋碚f明客戶端的服務(wù)調(diào)用進(jìn)程和服務(wù)端的服務(wù)提供進(jìn)程之間的通 信。如圖5所示,本實(shí)施例的跨主機(jī)進(jìn)程間通信的裝置包括接收模塊51、獲取識別模塊52、 獲取模塊53、生成模塊54和處理模塊55,其中,接收模塊51用于接收客戶端進(jìn)程引擎發(fā)送的數(shù)據(jù)包,數(shù)據(jù)包包括數(shù)據(jù)包類型和 鍵值對組;獲取識別模塊52用于通過解析數(shù)據(jù)包,獲取并識別數(shù)據(jù)包類型;獲取模塊53當(dāng) 識別數(shù)據(jù)包類型為服務(wù)請求類型時(shí),獲取鍵值對組,且鍵值對組包括本次服務(wù)請求鍵值對 和所需請求服務(wù)鍵值對子組,所需請求服務(wù)鍵值對子組包括所需請求服務(wù)標(biāo)識鍵值對,所 需請求服務(wù)標(biāo)識鍵值對包括所需請求服務(wù)標(biāo)識鍵和第一值,所需請求服務(wù)標(biāo)識鍵=第一 值,且所需請求服務(wù)標(biāo)識鍵表示客戶端所需請求的服務(wù),第一值表示客戶端請求該服務(wù)的 次數(shù),進(jìn)一步地,所需請求服務(wù)鍵值對子組有時(shí)候還包括至少一個(gè)服務(wù)參數(shù)鍵值對,且服務(wù) 參數(shù)鍵值對包括服務(wù)參數(shù)類型鍵和第四值,服務(wù)參數(shù)類型鍵=第四值;生成模塊54根據(jù)所 需請求服務(wù)鍵值對子組,生成服務(wù)請求狀態(tài)鍵值對和服務(wù)返回?cái)?shù)據(jù)鍵值對,其中,服務(wù)請求 狀態(tài)鍵值對包括狀態(tài)標(biāo)識鍵stat和第二值,且stat =第二值,服務(wù)請求狀態(tài)鍵值對表示本 次請求成功與否;服務(wù)返回?cái)?shù)據(jù)鍵值對包括結(jié)果標(biāo)識鍵result和第三值,且result =第三 值,服務(wù)返回?cái)?shù)據(jù)鍵值對表示從服務(wù)提供代碼所獲得的返回消息;處理模塊55根據(jù)本次服 務(wù)請求鍵值對、服務(wù)請求狀態(tài)鍵值對和服務(wù)返回?cái)?shù)據(jù)鍵值對,生成服務(wù)返回?cái)?shù)據(jù)包并發(fā)送, 服務(wù)返回?cái)?shù)據(jù)包的數(shù)據(jù)包類型為服務(wù)返回類型。進(jìn)一步地,生成模塊54還包括查詢單元541,獲取單元542,生成單元543和判斷 模塊544,其中,當(dāng)所需請求服務(wù)鍵值對子組僅包括所需請求服務(wù)標(biāo)識鍵值對時(shí),查詢單元541用于根據(jù)所需請求服務(wù)標(biāo)識鍵值對,查詢服務(wù)注冊表中是否存在所需請求服務(wù)標(biāo)識鍵;獲取 單元542用于當(dāng)查詢單元541查詢到服務(wù)注冊表中存在所需請求服務(wù)標(biāo)識鍵時(shí),通過調(diào)用 服務(wù)提供代碼,獲取調(diào)用服務(wù)提供代碼所返回的服務(wù)結(jié)果;生成單元543用于生成第二值 為成功標(biāo)識OK的服務(wù)請求狀態(tài)鍵值對stat = ok,和第三值為服務(wù)結(jié)果的服務(wù)返回?cái)?shù)據(jù)鍵 值對result =服務(wù)結(jié)果;進(jìn)一步地,生成單元543還用于當(dāng)查詢單元541查詢到服務(wù)注冊 表中不存在所需請求服務(wù)標(biāo)識鍵時(shí),生成第二值為失敗標(biāo)識error的服務(wù)請求狀態(tài)鍵值對 stat = error,和第三值為錯誤信息的服務(wù)返回?cái)?shù)據(jù)鍵值對result =錯誤信息。該查詢服務(wù)注冊表在服務(wù)端生成,并保存在服務(wù)端進(jìn)程引擎中,具體地,由服務(wù)注 冊代碼將服務(wù)端所包含的服務(wù)注冊到服務(wù)端進(jìn)程引擎以在服務(wù)端進(jìn)程引擎中生成服務(wù)注 冊表;進(jìn)一步地,當(dāng)所需請求服務(wù)鍵值對子組包括所需請求服務(wù)標(biāo)識鍵值對和至少一個(gè) 服務(wù)參數(shù)鍵值對時(shí),查詢單元541用于根據(jù)所需請求服務(wù)標(biāo)識鍵值對,查詢服務(wù)注冊表中 是否存在所需請求服務(wù)標(biāo)識鍵,接著判斷單元544用于判斷服務(wù)參數(shù)類型鍵和第四值是否 匹配合法,例如一個(gè)服務(wù)參數(shù)鍵值對為int a = 10,則判斷10是否是整型;獲取單元542用 于若所需請求服務(wù)標(biāo)識鍵存在于服務(wù)注冊表中,且服務(wù)參數(shù)類型鍵和第四值匹配合法,則 通過調(diào)用服務(wù)提供代碼,獲取服務(wù)提供代碼的返回消息;生成單元543用于若返回消息為 服務(wù)結(jié)果,則生成第二值為成功標(biāo)識OK的服務(wù)請求狀態(tài)鍵值對stat = ok,和第三值為服務(wù) 結(jié)果的服務(wù)返回?cái)?shù)據(jù)鍵值對result =服務(wù)結(jié)果;進(jìn)一步地,生成單元543還用于若獲取到服務(wù)提供代碼所返回的錯誤信息,則生 成第二值為失敗標(biāo)識的服務(wù)請求狀態(tài)鍵值對stat = error和第三值為錯誤信息的服務(wù)返 回?cái)?shù)據(jù)鍵值對result =錯誤信息再進(jìn)一步地,生成單元543還用于若所需請求服務(wù)標(biāo)識鍵不存在于服務(wù)注冊表中 和/或服務(wù)參數(shù)類型鍵和第四值匹配不合法,則生成第二值為失敗標(biāo)識error的服務(wù)請求 狀態(tài)鍵值對stat = error和第三值為錯誤信息的服務(wù)返回?cái)?shù)據(jù)鍵值對result =錯誤信 肩、ο需要說明的是,本實(shí)施例的裝置在服務(wù)提供進(jìn)程側(cè)進(jìn)行跨主機(jī)進(jìn)程間通信的具體 方法,如上述實(shí)施例一中具體描述所述,在此不再贅述。本發(fā)明實(shí)施例的跨主機(jī)進(jìn)程間通信的裝置,在一個(gè)TCP連接上的服務(wù)端進(jìn)程引擎 側(cè),服務(wù)端進(jìn)程引擎通過獲取并識別客戶端進(jìn)程引擎發(fā)送的數(shù)據(jù)包的數(shù)據(jù)包類型,當(dāng)數(shù)據(jù) 包類型為服務(wù)請求類型時(shí),進(jìn)行服務(wù)客戶端的服務(wù)調(diào)用進(jìn)程和服務(wù)端的服務(wù)提供進(jìn)程之間 的通信,解決了現(xiàn)有技術(shù)中所存在的無法在同一 TCP連接上支持服務(wù)調(diào)用和消息通知的缺 陷,實(shí)現(xiàn)了在同一 TCP連接上支持服務(wù)調(diào)用和消息通知的目的,由于一個(gè)TCP連接容易穿越 客戶端和服務(wù)端的防火墻,因此提搞了服務(wù)端和客戶端之間通信的交互效率。對應(yīng)于上述實(shí)施例五是從服務(wù)端進(jìn)程引擎?zhèn)葋碚f明客戶端的服務(wù)調(diào)用進(jìn)程和服 務(wù)端的服務(wù)提供進(jìn)程之間的通信,本實(shí)施例主要從客戶端進(jìn)程引擎?zhèn)葋碚f明客戶端的服務(wù) 調(diào)用進(jìn)程和服務(wù)端的服務(wù)提供進(jìn)程之間的通信。圖6為本發(fā)明實(shí)施例六跨主機(jī)進(jìn)程間通信 的裝置結(jié)構(gòu)示意圖。如圖6所示,本實(shí)施例跨主機(jī)進(jìn)程間通信的裝置包括第一接收模塊61、 生成模塊62和發(fā)送模塊63,其中,第一接收模塊61用于接收服務(wù)調(diào)用代碼發(fā)送的服務(wù)請求 數(shù)據(jù);生成模塊62用于根據(jù)服務(wù)請求數(shù)據(jù),生成數(shù)據(jù)包類型為服務(wù)請求類型的數(shù)據(jù)包;發(fā)送模塊63用于向服務(wù)端進(jìn)程引擎發(fā)送服務(wù)請求類型的數(shù)據(jù)包,以進(jìn)行服務(wù)請求。進(jìn)一步地,本實(shí)施例跨主機(jī)進(jìn)程間通信的裝置還包括第二接收模塊、獲取模塊和 第二發(fā)送模塊,其中,第二接收模塊用于接收服務(wù)端進(jìn)程引擎返回的服務(wù)返回?cái)?shù)據(jù)包,服務(wù) 返回?cái)?shù)據(jù)包包括本次服務(wù)請求鍵值對、服務(wù)請求狀態(tài)鍵值對和服務(wù)返回?cái)?shù)據(jù)鍵值對;獲取 模塊用于通過解析服務(wù)返回?cái)?shù)據(jù)包,獲取服務(wù)請求狀態(tài)鍵值對和服務(wù)返回?cái)?shù)據(jù)鍵值對;第 二發(fā)送模塊用于若服務(wù)請求狀態(tài)鍵值對所包括的第二值為成功標(biāo)識,則將服務(wù)返回?cái)?shù)據(jù)鍵 值對所包括的第三值發(fā)送給服務(wù)調(diào)用代碼。需要說明的是,本實(shí)施例的裝置在服務(wù)調(diào)用進(jìn)程側(cè)進(jìn)行跨主機(jī)進(jìn)程間通信的具體 方法,如上述實(shí)施例二中具體描述所述,在此不再贅述。本發(fā)明實(shí)施例的跨主機(jī)進(jìn)程間通信的裝置,主要在服務(wù)調(diào)用進(jìn)程側(cè),通過客戶端 進(jìn)程引擎接收服務(wù)調(diào)用代碼發(fā)送的服務(wù)請求數(shù)據(jù),生成服務(wù)請求類型的數(shù)據(jù)包并發(fā)送的技 術(shù)方案,解決了現(xiàn)有技術(shù)中所存在的無法在同一 TCP連接上支持服務(wù)調(diào)用和消息通知的缺 陷,實(shí)現(xiàn)了在同一 TCP連接上支持服務(wù)調(diào)用和消息通知的目的,由于一個(gè)TCP連接容易穿越 客戶端和服務(wù)端的防火墻,因此提搞了服務(wù)端和客戶端之間通信的交互效率。圖7為本發(fā)明實(shí)施例三跨主機(jī)進(jìn)程間通信的裝置結(jié)構(gòu)示意圖。在本實(shí)施例中,主 要從服務(wù)端進(jìn)程引擎?zhèn)葋碚f明客戶端的消息發(fā)送進(jìn)程和服務(wù)端的消息接收進(jìn)程之間的通 信。如圖7,本實(shí)施跨主機(jī)進(jìn)程間通信的裝置包括接收模塊71、獲取識別模塊72、獲取模塊 73,判斷模塊74和發(fā)送模塊75,其中,接收模塊71用于接收客戶端進(jìn)程引擎發(fā)送的數(shù)據(jù)包, 數(shù)據(jù)包包括數(shù)據(jù)包類型和鍵值對組;獲取識別模塊72用于通過解析數(shù)據(jù)包,獲取數(shù)據(jù)包類 型并識別;獲取模塊73用于當(dāng)識別數(shù)據(jù)包類型為消息通知類型時(shí),獲取鍵值對組,鍵值對 組包括至少一個(gè)消息數(shù)據(jù)鍵值對,消息數(shù)據(jù)鍵值對包括消息數(shù)據(jù)類型鍵和消息值;判斷模 塊74用于判斷消息數(shù)據(jù)類型鍵是否在消息偵聽注冊表中;發(fā)送模塊75用于當(dāng)判斷模塊74 判斷出消息數(shù)據(jù)類型鍵在消息偵聽注冊表中時(shí),將消息值發(fā)送給消息數(shù)據(jù)類型鍵所對應(yīng)的 消息接收代碼。需要說明的是,本實(shí)施例的裝置在消息接收進(jìn)程側(cè)進(jìn)行跨主機(jī)進(jìn)程間通信的具體 方法,如上述實(shí)施例三中具體描述所述,在此不再贅述。本發(fā)明實(shí)施例的跨主機(jī)進(jìn)程間通信的裝置,在一個(gè)TCP連接上的服務(wù)端進(jìn)程引擎 側(cè),服務(wù)端進(jìn)程引擎通過獲取并識別客戶端進(jìn)程引擎發(fā)送的數(shù)據(jù)包的數(shù)據(jù)包類型,當(dāng)數(shù)據(jù) 包類型為消息通知類型時(shí),進(jìn)行服務(wù)客戶端的服務(wù)調(diào)用進(jìn)程和服務(wù)端的服務(wù)提供進(jìn)程之間 的通信,解決了現(xiàn)有技術(shù)中所存在的無法在同一 TCP連接上支持服務(wù)調(diào)用和消息通知的缺 陷,實(shí)現(xiàn)了在同一 TCP連接上支持服務(wù)調(diào)用和消息通知的目的,由于一個(gè)TCP連接容易穿越 客戶端和服務(wù)端的防火墻,因此提搞了服務(wù)端和客戶端之間通信的交互效率。對應(yīng)于上述實(shí)施例七是從服務(wù)端進(jìn)程引擎?zhèn)葋碚f明客戶端的消息發(fā)送進(jìn)程和服 務(wù)端的消息接收進(jìn)程之間的通信,本實(shí)施例主要從客戶端進(jìn)程引擎?zhèn)葋碚f明客戶端的消息 發(fā)送進(jìn)程和服務(wù)端的消息接收進(jìn)程之間的通信。圖8為本發(fā)明實(shí)施例八跨主機(jī)進(jìn)程間通信 的裝置結(jié)構(gòu)示意圖。如圖8所示,本實(shí)施例跨主機(jī)進(jìn)程間通信的方法包括接收模塊81,生 成模塊82和發(fā)送模塊83,其中,接收模塊81用于接收消息發(fā)送代碼發(fā)送的消息數(shù)據(jù);生成 模塊82用于根據(jù)消息數(shù)據(jù),生成數(shù)據(jù)包類型為消息通知類型的數(shù)據(jù)包;發(fā)送模塊83用于向 服務(wù)端進(jìn)程引擎發(fā)送消息通知類型的數(shù)據(jù)包,以進(jìn)行消息通知。
需要說明的是,本實(shí)施例的裝置在消息發(fā)送進(jìn)程側(cè)進(jìn)行跨主機(jī)進(jìn)程間通信的具體 方法,如上述實(shí)施例四中具體描述所述,在此不再贅述。本發(fā)明實(shí)施例的跨主機(jī)進(jìn)程間通信的裝置,在一個(gè)TCP連接上,通過客戶端進(jìn)程 引擎將消息數(shù)據(jù)封裝成消息通知類型的數(shù)據(jù)包并發(fā)送的技術(shù)方案,通過客戶端進(jìn)程引擎接 收消息發(fā)送代碼發(fā)送的消息數(shù)據(jù),生成數(shù)據(jù)包類型為消息通知類型的數(shù)據(jù)包并發(fā)送的技術(shù) 方案,解決了現(xiàn)有技術(shù)中所存在的無法在同一 TCP連接上支持服務(wù)調(diào)用和消息通知的缺 陷,實(shí)現(xiàn)了在同一 TCP連接上支持服務(wù)調(diào)用和消息通知的目的,由于一個(gè)TCP連接容易穿越 客戶端和服務(wù)端的防火墻,因此提搞了服務(wù)端和客戶端之間通信的交互效率。本實(shí)施例中,跨主機(jī)進(jìn)程間通信的系統(tǒng)進(jìn)行客戶端的服務(wù)調(diào)用進(jìn)程和服務(wù)端的服 務(wù)提供進(jìn)程之間的通信。圖9為本發(fā)明實(shí)施例九跨主機(jī)進(jìn)程間通信的系統(tǒng)結(jié)構(gòu)示意圖。如 圖9所示,本實(shí)施例跨主機(jī)進(jìn)程間通信的系統(tǒng)包括服務(wù)端91和客戶端92,客戶端92包括客 戶端進(jìn)程引擎921,服務(wù)端91包括服務(wù)端進(jìn)程引擎911,其中,客戶端進(jìn)程引擎921用于接收服務(wù)調(diào)用代碼發(fā)送的服務(wù)請求數(shù)據(jù);根據(jù)服 務(wù)請求數(shù)據(jù),生成數(shù)據(jù)包類型為服務(wù)請求類型的數(shù)據(jù)包;并向服務(wù)端進(jìn)程引擎911發(fā)送服 務(wù)請求類型的數(shù)據(jù)包,以進(jìn)行服務(wù)請求;服務(wù)端進(jìn)程引擎911用于接收客戶端進(jìn)程引擎921發(fā)送的數(shù)據(jù)包,數(shù)據(jù)包包括數(shù) 據(jù)包類型和鍵值對組;通過解析數(shù)據(jù)包,獲取并識別數(shù)據(jù)包類型;當(dāng)識別數(shù)據(jù)包類型為服 務(wù)請求類型時(shí),獲取鍵值對組,且鍵值對組包括本次服務(wù)請求鍵值對和所需請求服務(wù)鍵值 對子組;根據(jù)所需請求服務(wù)鍵值對子組,生成服務(wù)請求狀態(tài)鍵值對和服務(wù)返回?cái)?shù)據(jù)鍵值對; 根據(jù)本次服務(wù)請求鍵值對、服務(wù)請求狀態(tài)鍵值對和服務(wù)返回?cái)?shù)據(jù)鍵值對,生成服務(wù)返回?cái)?shù) 據(jù)包并發(fā)送,服務(wù)返回?cái)?shù)據(jù)包的數(shù)據(jù)包類型為服務(wù)返回類型;進(jìn)一步地,客戶端進(jìn)程引擎921還用于接收服務(wù)端進(jìn)程引擎911返回的服務(wù)返回 數(shù)據(jù)包,服務(wù)返回?cái)?shù)據(jù)包包括本次服務(wù)請求鍵值對、服務(wù)請求狀態(tài)鍵值對和服務(wù)返回?cái)?shù)據(jù) 鍵值對;通過解析服務(wù)返回?cái)?shù)據(jù)包,獲取服務(wù)請求狀態(tài)鍵值對和服務(wù)返回?cái)?shù)據(jù)鍵值對;若 服務(wù)請求狀態(tài)鍵值對所包括的第二值為成功標(biāo)識,則將服務(wù)返回?cái)?shù)據(jù)鍵值對所包括的第三 值發(fā)送給服務(wù)調(diào)用代碼; 進(jìn)一步地,客戶端92還包括服務(wù)調(diào)用裝置922,服務(wù)調(diào)用裝置922用于提供服務(wù)調(diào) 用代碼;服務(wù)端91還包括服務(wù)提供裝置912和服務(wù)注冊裝置913,服務(wù)提供裝置912用于 提供服務(wù)提供代碼,服務(wù)注冊裝置913利用服務(wù)注冊代碼將服務(wù)端91所包含的服務(wù)注冊到 服務(wù)端進(jìn)程引擎911,以在服務(wù)端進(jìn)程引擎911中生成服務(wù)注冊表。需要說明的是,本實(shí)施例的系統(tǒng)中的服務(wù)端進(jìn)程引擎911可以包括如上述實(shí)施例 五中裝置的模塊和單元,而在服務(wù)提供進(jìn)程側(cè)進(jìn)行跨主機(jī)進(jìn)程間通信的具體方法,如上述 實(shí)施例一中具體描述所述,在此不再贅述;并且本實(shí)施例的系統(tǒng)中的客戶端進(jìn)程引擎921可以包括如上述實(shí)施例六中裝置 的模塊和單元,而在服務(wù)提供進(jìn)程側(cè)進(jìn)行跨主機(jī)進(jìn)程間通信的具體方法,如上述實(shí)施例二 中具體描述所述,在此不再贅述。本發(fā)明實(shí)施例的跨主機(jī)進(jìn)程間通信的系統(tǒng),在一個(gè)TCP連接上,服務(wù)端進(jìn)程引擎 通過獲取并識別客戶端進(jìn)程引擎發(fā)送的數(shù)據(jù)包的數(shù)據(jù)包類型,當(dāng)數(shù)據(jù)包類型為服務(wù)請求類型時(shí),進(jìn)行服務(wù)客戶端的服務(wù)調(diào)用進(jìn)程和服務(wù)端的服務(wù)提供進(jìn)程之間的通信,解決了現(xiàn)有 技術(shù)中所存在的無法在同一 TCP連接上支持服務(wù)調(diào)用和消息通知的缺陷,實(shí)現(xiàn)了在同一 TCP連接上支持服務(wù)調(diào)用和消息通知的目的,由于一個(gè)TCP連接容易穿越客戶端和服務(wù)端 的防火墻,因此提搞了服務(wù)端和客戶端之間通信的交互效率。本實(shí)施例中,跨主機(jī)進(jìn)程間通信的系統(tǒng)進(jìn)行客戶端的消息發(fā)送進(jìn)程和服務(wù)端的消 息接收進(jìn)程之間的通信。圖10為本發(fā)明實(shí)施例十跨主機(jī)進(jìn)程間通信的系統(tǒng)結(jié)構(gòu)示意圖。如 圖10所示,本實(shí)施例跨主機(jī)進(jìn)程間通信的系統(tǒng)包括服務(wù)端101和客戶端102,客戶端102包 括客戶端進(jìn)程引擎1021,服務(wù)端101包括服務(wù)端進(jìn)程引擎1011,客戶端進(jìn)程引擎1021用于接收消息發(fā)送代碼發(fā)送的消息數(shù)據(jù);根據(jù)消息數(shù)據(jù),生 成數(shù)據(jù)包類型為消息通知類型的數(shù)據(jù)包;并向服務(wù)端進(jìn)程引擎1011發(fā)送消息通知類型的 數(shù)據(jù)包,以進(jìn)行消息通知。服務(wù)端進(jìn)程引擎1011用于接收客戶端進(jìn)程引擎1021發(fā)送的數(shù)據(jù)包,數(shù)據(jù)包包括 數(shù)據(jù)包類型和鍵值對組;通過解析數(shù)據(jù)包,獲取數(shù)據(jù)包類型并識別;當(dāng)識別數(shù)據(jù)包類型為 消息通知類型時(shí),獲取鍵值對組,鍵值對組包括至少一個(gè)消息數(shù)據(jù)鍵值對,消息數(shù)據(jù)鍵值對 包括消息數(shù)據(jù)類型鍵和消息值;判斷消息數(shù)據(jù)類型鍵是否在消息偵聽注冊表中,若是,則將 并將消息值發(fā)送給消息數(shù)據(jù)類型鍵所對應(yīng)的消息接收代碼。進(jìn)一步地,客戶端102還包括消息發(fā)送裝置1022,消息發(fā)送裝置1022用于提供消 息發(fā)送代碼。服務(wù)端101還包括消息接收裝置1012和消息偵聽注冊裝置1013,消息接收裝置 1012用于提供消息接收代碼,消息偵聽注冊裝置1013利用消息偵聽注冊代碼,將服務(wù)端 101所需偵聽的消息數(shù)據(jù)類型注冊到服務(wù)端進(jìn)程引擎1011,以在服務(wù)端進(jìn)程引擎1011中生 成消息偵聽注冊表。需要說明的是,本實(shí)施例的系統(tǒng)中的服務(wù)端進(jìn)程引擎1011可以包括如上述實(shí)施 例六中裝置的模塊和單元,而在服務(wù)提供進(jìn)程側(cè)進(jìn)行跨主機(jī)進(jìn)程間通信的具體方法,如上 述實(shí)施例三中具體描述所述,在此不再贅述;并且本實(shí)施例的系統(tǒng)中的客戶端進(jìn)程引擎1021可以包括如上述實(shí)施例六中裝置 的模塊和單元,而在服務(wù)提供進(jìn)程側(cè)進(jìn)行跨主機(jī)進(jìn)程間通信的具體方法,如上述實(shí)施例四 中具體描述所述,在此不再贅述。本發(fā)明實(shí)施例的跨主機(jī)進(jìn)程間通信的系統(tǒng),在一個(gè)TCP連接上,服務(wù)端進(jìn)程引擎 通過獲取并識別客戶端進(jìn)程引擎發(fā)送的數(shù)據(jù)包的數(shù)據(jù)包類型,當(dāng)數(shù)據(jù)包類型為消息通知類 型時(shí),進(jìn)行服務(wù)客戶端的服務(wù)調(diào)用進(jìn)程和服務(wù)端的服務(wù)提供進(jìn)程之間的通信,解決了現(xiàn)有 技術(shù)中所存在的無法在同一 TCP連接上支持服務(wù)調(diào)用和消息通知的缺陷,實(shí)現(xiàn)了在同一 TCP連接上支持服務(wù)調(diào)用和消息通知的目的,由于一個(gè)TCP連接容易穿越客戶端和服務(wù)端 的防火墻,因此提搞了服務(wù)端和客戶端之間通信的交互效率。本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述方法實(shí)施例的全部或部分步驟可以通過 程序指令相關(guān)的硬件來完成,前述的程序可以存儲于一計(jì)算機(jī)可讀取存儲介質(zhì)中,該程序 在執(zhí)行時(shí),執(zhí)行包括上述方法實(shí)施例的步驟;而前述的存儲介質(zhì)包括R0M、RAM、磁碟或者 光盤等各種可以存儲程序代碼的介質(zhì)。最后應(yīng)說明的是以上實(shí)施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照前述實(shí)施例對本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解其依然 可以對前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對其中部分技術(shù)特征進(jìn)行等同替 換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的精 神和范圍。
權(quán)利要求
一種跨主機(jī)進(jìn)程間通信的方法,其特征在于,包括接收客戶端進(jìn)程引擎發(fā)送的數(shù)據(jù)包,所述數(shù)據(jù)包包括數(shù)據(jù)包類型和鍵值對組;通過解析所述數(shù)據(jù)包,獲取并識別所述數(shù)據(jù)包類型;當(dāng)識別所述數(shù)據(jù)包類型為服務(wù)請求類型時(shí),獲取所述鍵值對組,且所述鍵值對組包括本次服務(wù)請求鍵值對和所需請求服務(wù)鍵值對子組;根據(jù)所需請求服務(wù)鍵值對子組,生成服務(wù)請求狀態(tài)鍵值對和服務(wù)返回?cái)?shù)據(jù)鍵值對;根據(jù)所述本次服務(wù)請求鍵值對、服務(wù)請求狀態(tài)鍵值對和服務(wù)返回?cái)?shù)據(jù)鍵值對,生成服務(wù)返回?cái)?shù)據(jù)包并發(fā)送,所述服務(wù)返回?cái)?shù)據(jù)包的數(shù)據(jù)包類型為服務(wù)返回類型。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述所需請求服務(wù)鍵值對子組包括所需 請求服務(wù)標(biāo)識鍵值對,所述所需請求服務(wù)標(biāo)識鍵值對包括所需請求服務(wù)標(biāo)識鍵和第一值, 所述所需請求服務(wù)標(biāo)識鍵對應(yīng)所述第一值,且所述所需請求服務(wù)標(biāo)識鍵表示客戶端所需請 求的服務(wù),所述第一值表示客戶端請求該服務(wù)的次數(shù)。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述根據(jù)所需請求服務(wù)鍵值對子組,生成 服務(wù)請求狀態(tài)鍵值對和服務(wù)返回?cái)?shù)據(jù)鍵值對包括所述服務(wù)請求狀態(tài)鍵值對包括狀態(tài)標(biāo)識鍵和第二值,且所述狀態(tài)標(biāo)識鍵對應(yīng)所述第 二值;所述服務(wù)返回?cái)?shù)據(jù)鍵值包括結(jié)果標(biāo)識鍵和第三值,且所述結(jié)果標(biāo)識鍵對應(yīng)所述第三 值;根據(jù)所述所需請求服務(wù)標(biāo)識鍵值對,查詢服務(wù)注冊表中是否存在所述所需請求服務(wù)標(biāo) 識鍵,若是,則通過調(diào)用服務(wù)提供代碼,獲取服務(wù)結(jié)果;并生成所述第二值為成功標(biāo)識的服務(wù)請求狀態(tài)鍵值對和所述第三值為所述服務(wù)結(jié)果 的服務(wù)返回?cái)?shù)據(jù)鍵值對。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,若所述服務(wù)注冊表中不存在所述所需請求服務(wù)標(biāo)識鍵,則生成所述第二值為失敗標(biāo)識 的服務(wù)請求狀態(tài)鍵值對和所述第三值為錯誤信息的服務(wù)返回?cái)?shù)據(jù)鍵值對。
5.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述所需請求服務(wù)鍵值對子組還包括至 少一個(gè)服務(wù)參數(shù)鍵值對,且所述服務(wù)參數(shù)鍵值對包括服務(wù)參數(shù)類型鍵和第四值,所述服務(wù) 參數(shù)類型鍵對應(yīng)所述第四值。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述根據(jù)所需請求服務(wù)鍵值對子組,生成 服務(wù)請求狀態(tài)鍵值對和服務(wù)返回?cái)?shù)據(jù)鍵值對包括所述服務(wù)請求狀態(tài)鍵值對包括狀態(tài)標(biāo)識鍵和第二值,且所述狀態(tài)標(biāo)識鍵對應(yīng)所述第二 值;所述服務(wù)返回?cái)?shù)據(jù)鍵值對包括結(jié)果標(biāo)識鍵和第三值,且所述結(jié)果標(biāo)識鍵對應(yīng)所述第三 值;根據(jù)所述所需請求服務(wù)標(biāo)識鍵值對,查詢服務(wù)注冊表中是否存在所述所需請求服務(wù)標(biāo) 識鍵,并判斷所述服務(wù)參數(shù)類型鍵和第四值是否匹配合法;若所述所需請求服務(wù)標(biāo)識鍵存在于所述服務(wù)注冊表中,且所述服務(wù)參數(shù)類型鍵和第四 值匹配合法,則通過調(diào)用服務(wù)提供代碼,獲取所述服務(wù)提供代碼的返回消息;若所述返回消息為服務(wù)結(jié)果,則生成所述第二值為成功標(biāo)識的服務(wù)請求狀態(tài)鍵值對和 生成所述第三值為所述服務(wù)結(jié)果的服務(wù)返回?cái)?shù)據(jù)鍵值對。
7.根據(jù)權(quán)利要求6所述的方法,其特征在于,還包括若所述所需請求服務(wù)標(biāo)識鍵不存在于所述服務(wù)注冊表中和/或所述服務(wù)參數(shù)類型鍵 和第四值匹配不合法,則生成所述第二值為失敗標(biāo)識的服務(wù)請求狀態(tài)鍵值對和所述第三值 為錯誤信息的服務(wù)返回?cái)?shù)據(jù)鍵值對。
8.根據(jù)權(quán)利要求6所述的方法,其特征在于,還包括若獲取到所述服務(wù)提供代碼所返回的錯誤信息,則生成所述第二值為失敗標(biāo)識的服務(wù) 請求狀態(tài)鍵值對和所述第三值為錯誤信息的服務(wù)返回?cái)?shù)據(jù)鍵值對。
9.一種跨主機(jī)進(jìn)程間通信的方法,其特征在于,包括接收服務(wù)調(diào)用代碼發(fā)送的服務(wù)請求數(shù)據(jù);根據(jù)所述服務(wù)請求數(shù)據(jù),生成數(shù)據(jù)包類型為服務(wù)請求類型的數(shù)據(jù)包;并向服務(wù)端進(jìn)程引擎發(fā)送所述服務(wù)請求類型的數(shù)據(jù)包,以進(jìn)行服務(wù)請求。
10.根據(jù)權(quán)利要求9所述的方法,其特征在于,還包括接收服務(wù)端進(jìn)程引擎返回的服務(wù)返回?cái)?shù)據(jù)包,所述服務(wù)返回?cái)?shù)據(jù)包包括本次服務(wù)請求 鍵值對、服務(wù)請求狀態(tài)鍵值對和服務(wù)返回?cái)?shù)據(jù)鍵值對;通過解析所述服務(wù)返回?cái)?shù)據(jù)包,獲取所述服務(wù)請求狀態(tài)鍵值對和服務(wù)返回?cái)?shù)據(jù)鍵值對;若所述服務(wù)請求狀態(tài)鍵值對所包括的第二值為成功標(biāo)識,則將所述服務(wù)返回?cái)?shù)據(jù)鍵值 對所包括的第三值發(fā)送給所述服務(wù)調(diào)用代碼。
11.一種跨主機(jī)進(jìn)程間通信的裝置,其特征在于,包括接收模塊,所述接收模塊用于接收客戶端進(jìn)程引擎發(fā)送的數(shù)據(jù)包,所述數(shù)據(jù)包包括數(shù) 據(jù)包類型和鍵值對組;獲取識別模塊,所述獲取識別模塊用于通過解析所述數(shù)據(jù)包,獲取并識別所述數(shù)據(jù)包 類型;獲取模塊,所述獲取模塊用于當(dāng)識別所述數(shù)據(jù)包類型為服務(wù)請求類型時(shí),獲取所述鍵 值對組,且所述鍵值對組包括本次服務(wù)請求鍵值對和所需請求服務(wù)鍵值對子組;生成模塊,所述生成模塊用于根據(jù)所需請求服務(wù)鍵值對子組,生成服務(wù)請求狀態(tài)鍵值 對和服務(wù)返回?cái)?shù)據(jù)鍵值對;處理模塊,所述處理模塊用于根據(jù)所述本次服務(wù)請求鍵值對、服務(wù)請求狀態(tài)鍵值對和 服務(wù)返回?cái)?shù)據(jù)鍵值對,生成服務(wù)返回?cái)?shù)據(jù)包并發(fā)送,所述服務(wù)返回?cái)?shù)據(jù)包的數(shù)據(jù)包類型為 服務(wù)返回類型。
12.根據(jù)權(quán)利要求11所述的裝置,其特征在于,所述所需請求服務(wù)鍵值對子組包括所 需請求服務(wù)標(biāo)識鍵值對,所述所需請求服務(wù)標(biāo)識鍵值對包括所需請求服務(wù)標(biāo)識鍵和第一 值,所述所需請求服務(wù)標(biāo)識鍵對應(yīng)所述第一值,且所述所需請求服務(wù)標(biāo)識鍵表示客戶端所 需請求的服務(wù),所述第一值表示客戶端請求該服務(wù)的次數(shù)。
13.根據(jù)權(quán)利要求12所述的裝置,其特征在于,所述服務(wù)請求狀態(tài)鍵值對包括狀態(tài)標(biāo) 識鍵和第二值,且所述狀態(tài)標(biāo)識鍵對應(yīng)所述第二值;所述服務(wù)返回?cái)?shù)據(jù)鍵值對包括結(jié)果標(biāo) 識鍵和第三值,且所述結(jié)果標(biāo)識鍵對應(yīng)所述第三值;所述生成模塊包括查詢單元,所述查詢單元用于根據(jù)所述所需請求服務(wù)標(biāo)識鍵值對,查詢服務(wù)注冊表中 是否存在所述所需請求服務(wù)標(biāo)識鍵,獲取單元,所述獲取單元用于所述查詢單元查詢到所述服務(wù)注冊表中存在所述所需請 求服務(wù)標(biāo)識鍵時(shí),通過調(diào)用服務(wù)提供代碼,獲取服務(wù)結(jié)果;生成單元,所述生成單元用于生成所述第二值為成功標(biāo)識的服務(wù)請求狀態(tài)鍵值對和所 述第三值為所述服務(wù)結(jié)果的服務(wù)返回?cái)?shù)據(jù)鍵值對。
14.根據(jù)權(quán)利要求13所述的裝置,其特征在于,所述生成單元還用于所述查詢單元查詢到所述服務(wù)注冊表中不存在所述所需請求服 務(wù)標(biāo)識鍵時(shí),生成所述第二值為失敗標(biāo)識的服務(wù)請求狀態(tài)鍵值對和所述第三值為錯誤信息 的服務(wù)返回?cái)?shù)據(jù)鍵值對。
15.根據(jù)權(quán)利要求12所述的裝置,其特征在于,所述所需請求服務(wù)鍵值對子組還包括 至少一個(gè)服務(wù)參數(shù)鍵值對,且所述服務(wù)參數(shù)鍵值對包括服務(wù)參數(shù)類型鍵和第四值,所述服 務(wù)參數(shù)類型鍵對應(yīng)所述第四值。
16.根據(jù)權(quán)利要求15所述的裝置,其特征在于,所述服務(wù)請求狀態(tài)鍵值對包括狀態(tài)標(biāo)識鍵和第二值,且所述狀態(tài)標(biāo)識鍵對應(yīng)所述第二 值;所述服務(wù)返回?cái)?shù)據(jù)鍵值對包括結(jié)果標(biāo)識鍵和第三值,且所述結(jié)果標(biāo)識鍵對應(yīng)所述第三 值;所述生成模塊包括查詢單元,所述查詢單元用于根據(jù)所述所需請求服務(wù)標(biāo)識鍵值對,查詢服務(wù)注冊表中 是否存在所述所需請求服務(wù)標(biāo)識鍵;判斷單元,所述判斷單元用于判斷所述服務(wù)參數(shù)類型鍵和第四值是否匹配合法;獲取單元,所述獲取單元用于所述查詢單元查詢到所述服務(wù)注冊表中存在所述所需請 求服務(wù)標(biāo)識鍵,且所述判斷單元判斷所述服務(wù)參數(shù)類型鍵和第四值匹配合法時(shí),通過調(diào)用 服務(wù)提供代碼,獲取所述服務(wù)提供代碼的返回消息;生成單元,所述生成單元用于若所述返回消息為服務(wù)結(jié)果,則生成所述第二值為成功 標(biāo)識的服務(wù)請求狀態(tài)鍵值對和所述第三值為所述服務(wù)結(jié)果的服務(wù)返回?cái)?shù)據(jù)鍵值對。
17.根據(jù)權(quán)利要求16所述的裝置,其特征在于,所述生成單元還用于若所述所需請求服務(wù)標(biāo)識鍵不存在于所述服務(wù)注冊表中和/或 所述服務(wù)參數(shù)類型鍵和第四值匹配不合法,則生成所述第二值為失敗標(biāo)識的服務(wù)請求狀態(tài) 鍵值對和所述第三值為錯誤信息的服務(wù)返回?cái)?shù)據(jù)鍵值對。
18.根據(jù)權(quán)利要求16所述的裝置,其特征在于,所述生成單元還用于若所述獲取單元獲取到所述服務(wù)提供代碼所返回的錯誤信息時(shí), 則生成所述第二值為失敗標(biāo)識的服務(wù)請求狀態(tài)鍵值對和所述第三值為錯誤信息的服務(wù)返 回?cái)?shù)據(jù)鍵值對。
19.一種跨主機(jī)進(jìn)程間通信的裝置,其特征在于,包括第一接收模塊,所述第一接收模塊用于接收服務(wù)調(diào)用代碼發(fā)送的服務(wù)請求數(shù)據(jù);生成模塊,所述生成模塊用于根據(jù)所述服務(wù)請求數(shù)據(jù),生成數(shù)據(jù)包類型為服務(wù)請求類 型的數(shù)據(jù)包;發(fā)送模塊,所述發(fā)送模塊用于向服務(wù)端進(jìn)程引擎發(fā)送所述服務(wù)請求類型的數(shù)據(jù)包,以 進(jìn)行服務(wù)請求。
20.根據(jù)權(quán)利要求19所述的裝置,其特征在于,還包括第二接收模塊,所述第二接收模塊用于接收服務(wù)端進(jìn)程引擎返回的服務(wù)返回?cái)?shù)據(jù)包, 所述服務(wù)返回?cái)?shù)據(jù)包包括本次服務(wù)請求鍵值對、服務(wù)請求狀態(tài)鍵值對和服務(wù)返回?cái)?shù)據(jù)鍵值 對;獲取模塊,所述獲取模塊用于通過解析所述服務(wù)返回?cái)?shù)據(jù)包,獲取所述服務(wù)請求狀態(tài) 鍵值對和服務(wù)返回?cái)?shù)據(jù)鍵值對;第二發(fā)送模塊,所述第二發(fā)送模塊用于若所述服務(wù)請求狀態(tài)鍵值對所包括的第二值為 成功標(biāo)識,則將所述服務(wù)返回?cái)?shù)據(jù)鍵值對所包括的第三值發(fā)送給所述服務(wù)調(diào)用代碼。
21.—種跨主機(jī)進(jìn)程間通信的系統(tǒng),其特征在于,包括服務(wù)端和客戶端,所述客戶端包 括客戶端進(jìn)程引擎,所述服務(wù)端包括服務(wù)端進(jìn)程引擎,所述客戶端進(jìn)程引擎用于接收服務(wù)調(diào)用代碼發(fā)送的服務(wù)請求數(shù)據(jù);根據(jù)所述服務(wù)請求 數(shù)據(jù),生成數(shù)據(jù)包類型為服務(wù)請求類型的數(shù)據(jù)包;并向服務(wù)端進(jìn)程引擎發(fā)送所述服務(wù)請求 類型的數(shù)據(jù)包,以進(jìn)行服務(wù)請求;所述服務(wù)端進(jìn)程引擎用于接收客戶端進(jìn)程引擎發(fā)送的數(shù)據(jù)包,所述數(shù)據(jù)包包括數(shù)據(jù)包 類型和鍵值對組;通過解析所述數(shù)據(jù)包,獲取并識別所述數(shù)據(jù)包類型;當(dāng)識別所述數(shù)據(jù)包 類型為服務(wù)請求類型時(shí),獲取所述鍵值對組,且所述鍵值對組包括本次服務(wù)請求鍵值對和 所需請求服務(wù)鍵值對子組;根據(jù)所需請求服務(wù)鍵值對子組,生成服務(wù)請求狀態(tài)鍵值對和服 務(wù)返回?cái)?shù)據(jù)鍵值對;根據(jù)所述本次服務(wù)請求鍵值對、服務(wù)請求狀態(tài)鍵值對和服務(wù)返回?cái)?shù)據(jù) 鍵值對,生成服務(wù)返回?cái)?shù)據(jù)包并發(fā)送,所述服務(wù)返回?cái)?shù)據(jù)包的數(shù)據(jù)包類型為服務(wù)返回類型。
22.根據(jù)權(quán)利要求21所述的系統(tǒng),其特征在于,所述客戶端進(jìn)程引擎還用于接收服務(wù)端進(jìn)程引擎返回的服務(wù)返回?cái)?shù)據(jù)包,所述服務(wù)返 回?cái)?shù)據(jù)包包括本次服務(wù)請求鍵值對、服務(wù)請求狀態(tài)鍵值對和服務(wù)返回?cái)?shù)據(jù)鍵值對;通過解 析所述服務(wù)返回?cái)?shù)據(jù)包,獲取所述服務(wù)請求狀態(tài)鍵值對和服務(wù)返回?cái)?shù)據(jù)鍵值對;若所述服 務(wù)請求狀態(tài)鍵值對所包括的第二值為成功標(biāo)識,則將所述服務(wù)返回?cái)?shù)據(jù)鍵值對所包括的第 三值發(fā)送給所述服務(wù)調(diào)用代碼。
23.根據(jù)權(quán)利要求21所述的系統(tǒng),其特征在于,所述客戶端還包括服務(wù)調(diào)用裝置,所述 服務(wù)調(diào)用裝置用于提供所述服務(wù)調(diào)用代碼。
24.根據(jù)權(quán)利要求21所述的系統(tǒng),其特征在于,所述服務(wù)端還包括服務(wù)提供裝置,所述 服務(wù)提供裝置用于提供所述服務(wù)提供代碼。
25.根據(jù)權(quán)利要求21所述的系統(tǒng),其特征在于,所述服務(wù)端還包括服務(wù)注冊裝置,所述 服務(wù)注冊裝置利用服務(wù)注冊代碼將所述服務(wù)端所包含的服務(wù)注冊到所述服務(wù)端進(jìn)程引擎, 以在所述服務(wù)端進(jìn)程引擎中生成服務(wù)注冊表。
26.—種跨主機(jī)進(jìn)程間通信的方法,其特征在于,包括接收客戶端進(jìn)程引擎發(fā)送的數(shù)據(jù)包,所述數(shù)據(jù)包包括數(shù)據(jù)包類型和鍵值對組;通過解析所述數(shù)據(jù)包,獲取所述數(shù)據(jù)包類型并識別;當(dāng)識別所述數(shù)據(jù)包類型為消息通知類型時(shí),獲取所述鍵值對組,所述鍵值對組包括至 少一個(gè)消息數(shù)據(jù)鍵值對,所述消息數(shù)據(jù)鍵值對包括消息數(shù)據(jù)類型鍵和消息值;判斷所述消息數(shù)據(jù)類型鍵是否在所述消息偵聽注冊表中,若是,則將并將所述消息值 發(fā)送給所述消息數(shù)據(jù)類型鍵所對應(yīng)的消息接收代碼。
27.—種跨主機(jī)進(jìn)程間通信的方法,其特征在于,包括接收消息發(fā)送代碼發(fā)送的消息數(shù)據(jù);根據(jù)所述消息數(shù)據(jù),生成數(shù)據(jù)包類型為消息通知類型的數(shù)據(jù)包;并向所述服務(wù)端進(jìn)程引擎發(fā)送所述消息通知類型的數(shù)據(jù)包,以進(jìn)行消息通知。
28.—種跨主機(jī)進(jìn)程間通信的裝置,其特征在于,包括接收模塊,所述接收模塊用于接收客戶端進(jìn)程引擎發(fā)送的數(shù)據(jù)包,所述數(shù)據(jù)包包括數(shù) 據(jù)包類型和鍵值對組;獲取識別模塊,所述獲取識別模塊用于通過解析所述數(shù)據(jù)包,獲取所述數(shù)據(jù)包類型并 識別;獲取模塊,所述獲取模塊用于當(dāng)識別所述數(shù)據(jù)包類型為消息通知類型時(shí),獲取所述鍵 值對組,所述鍵值對組包括至少一個(gè)消息數(shù)據(jù)鍵值對,所述消息數(shù)據(jù)鍵值對包括消息數(shù)據(jù) 類型鍵和消息值;判斷模塊,所述判斷模塊用于判斷所述消息數(shù)據(jù)類型鍵是否在所述消息偵聽注冊表中;發(fā)送模塊,所述發(fā)送模塊用于當(dāng)所述判斷單元判斷出所述消息數(shù)據(jù)類型鍵在所述消息 偵聽注冊表中時(shí),將所述消息值發(fā)送給所述消息數(shù)據(jù)類型鍵所對應(yīng)的消息接收代碼。
29.—種跨主機(jī)進(jìn)程間通信的裝置,其特征在于,包括接收模塊,所述接收模塊用于接收消息發(fā)送代碼發(fā)送的消息數(shù)據(jù);生成模塊,所述生成模塊用于根據(jù)所述消息數(shù)據(jù),生成數(shù)據(jù)包類型為消息通知類型的 數(shù)據(jù)包;發(fā)送模塊,所述發(fā)送模塊用于向所述服務(wù)端進(jìn)程引擎發(fā)送所述消息通知類型的數(shù)據(jù) 包,以進(jìn)行消息通知。
30.一種跨主機(jī)進(jìn)程間通信的系統(tǒng),其特征在于,包括服務(wù)端和客戶端,所述客戶端包 括客戶端進(jìn)程引擎,所述服務(wù)端包括服務(wù)端進(jìn)程引擎,所述客戶端進(jìn)程引擎用于接收消息發(fā)送代碼發(fā)送的消息數(shù)據(jù);根據(jù)所述消息數(shù)據(jù),生 成數(shù)據(jù)包類型為消息通知類型的數(shù)據(jù)包;并向所述服務(wù)端進(jìn)程弓I擎發(fā)送所述消息通知類型 的數(shù)據(jù)包,以進(jìn)行消息通知;所述服務(wù)端進(jìn)程引擎用于接收客戶端進(jìn)程引擎發(fā)送的數(shù)據(jù)包,所述數(shù)據(jù)包包括數(shù)據(jù)包 類型和鍵值對組;通過解析所述數(shù)據(jù)包,獲取所述數(shù)據(jù)包類型并識別;當(dāng)識別所述數(shù)據(jù)包 類型為消息通知類型時(shí),獲取所述鍵值對組,所述鍵值對組包括至少一個(gè)消息數(shù)據(jù)鍵值對, 所述消息數(shù)據(jù)鍵值對包括消息數(shù)據(jù)類型鍵和消息值;判斷所述消息數(shù)據(jù)類型鍵是否在所述 消息偵聽注冊表中,若是,則將并將所述消息值發(fā)送給所述消息數(shù)據(jù)類型鍵所對應(yīng)的消息 接收代碼。
31.根據(jù)權(quán)利要求30所述的系統(tǒng),其特征在于,所述客戶端還包括消息發(fā)送裝置,所述 消息發(fā)送裝置用于提供所述消息發(fā)送代碼。
32.根據(jù)權(quán)利要求30所述的系統(tǒng),其特征在于,所述服務(wù)端還包括消息接收裝置,所述 消息發(fā)送裝置用于提供所述消息接收代碼。
33.根據(jù)權(quán)利要求30所述的系統(tǒng),其特征在于,所述服務(wù)端還包括消息偵聽注冊裝置, 所述消息偵聽注冊裝置利用消息偵聽注冊代碼,將所述服務(wù)端所需偵聽的消息數(shù)據(jù)類型注 冊到所述服務(wù)端進(jìn)程引擎,以在所述服務(wù)端進(jìn)程引擎中生成所述消息偵聽注冊表。
全文摘要
本發(fā)明提供一種跨主機(jī)進(jìn)程間通信的方法、裝置及系統(tǒng),其中該方法包括接收客戶端進(jìn)程引擎發(fā)送的數(shù)據(jù)包,所述數(shù)據(jù)包包括數(shù)據(jù)包類型和鍵值對組;通過解析所述數(shù)據(jù)包,獲取并識別所述數(shù)據(jù)包類型;當(dāng)識別所述數(shù)據(jù)包類型為服務(wù)請求類型時(shí),獲取所述鍵值對組,且所述鍵值對組包括本次服務(wù)請求鍵值對和所需請求服務(wù)鍵值對子組;根據(jù)所需請求服務(wù)鍵值對子組,生成服務(wù)請求狀態(tài)鍵值對和服務(wù)返回?cái)?shù)據(jù)鍵值對;根據(jù)所述本次服務(wù)請求鍵值對、服務(wù)請求狀態(tài)鍵值對和服務(wù)返回?cái)?shù)據(jù)鍵值對,生成服務(wù)返回?cái)?shù)據(jù)包并發(fā)送,所述服務(wù)返回?cái)?shù)據(jù)包的數(shù)據(jù)包類型為服務(wù)返回類型。本發(fā)明的技術(shù)方案解決了現(xiàn)有技術(shù)中所存在的無法在同一TCP連接上支持服務(wù)調(diào)用和消息通知的缺陷。
文檔編號G06F9/54GK101902458SQ20101011264
公開日2010年12月1日 申請日期2010年2月21日 優(yōu)先權(quán)日2010年2月21日
發(fā)明者鄭斌 申請人:中國聯(lián)合網(wǎng)絡(luò)通信集團(tuán)有限公司;聯(lián)通系統(tǒng)集成有限公司