本發(fā)明屬于云計算技術(shù)領(lǐng)域,尤其涉及跨平臺的服務(wù)調(diào)用方法及裝置。
背景技術(shù):
云計算已成為企業(yè)處理數(shù)據(jù)時常用的處理方式,當(dāng)用戶需要一種服務(wù)時,這個服務(wù)不一定直接由本地服務(wù)器提供,還可以通過調(diào)用其他服務(wù)器上的相應(yīng)程序遠(yuǎn)程為用戶提供服務(wù)。
然而在現(xiàn)有的云計算平臺中,開發(fā)人員需要區(qū)分目標(biāo)服務(wù)的部署位置,當(dāng)目標(biāo)服務(wù)的部署位置不在本地服務(wù)器時,一旦部署位置發(fā)生變化,開發(fā)人員必須修改對應(yīng)的代碼及配置才能找到和調(diào)用目標(biāo)服務(wù)。這給開發(fā)人員增加了額外的工作量,同時也不利于整個系統(tǒng)的穩(wěn)定運行。
技術(shù)實現(xiàn)要素:
有鑒于此,本發(fā)明實施例提供了跨平臺的服務(wù)調(diào)用方法及裝置,以解決現(xiàn)有的云計算平臺在目標(biāo)服務(wù)的部署位置發(fā)生變化后,必須修改對應(yīng)的代碼及配置才能找到目標(biāo)服務(wù)的問題。
第一方面,提供了一種跨平臺的服務(wù)調(diào)用方法,包括:接收用戶調(diào)用目標(biāo)服務(wù)的指令;
檢測所述目標(biāo)服務(wù)是否為本地服務(wù);
若所述目標(biāo)服務(wù)是本地服務(wù),則從本地服務(wù)器直接調(diào)用該目標(biāo)服務(wù);
若所述目標(biāo)服務(wù)不是本地服務(wù),則從遠(yuǎn)程服務(wù)列表中搜索所述目標(biāo)服務(wù);
若所述目標(biāo)服務(wù)在所述遠(yuǎn)程服務(wù)列表中,則根據(jù)所述遠(yuǎn)程服務(wù)列表中的所述目標(biāo)服務(wù)的服務(wù)信息,從遠(yuǎn)程服務(wù)器調(diào)用所述目標(biāo)服務(wù),獲取調(diào)用結(jié)果;
若所述目標(biāo)服務(wù)不在所述遠(yuǎn)程服務(wù)列表中,則根據(jù)注冊服務(wù)器提供的服務(wù)信息,從遠(yuǎn)程服務(wù)器調(diào)用所述目標(biāo)服務(wù),獲取調(diào)用結(jié)果。
第二方面,提供了一種跨平臺的服務(wù)調(diào)用裝置,包括:接收模塊,用于接收用戶調(diào)用目標(biāo)服務(wù)的指令;
檢測模塊,用于檢測所述目標(biāo)服務(wù)是否為本地服務(wù);
本地調(diào)用模塊,若所述目標(biāo)服務(wù)是本地服務(wù),則從本地服務(wù)器直接調(diào)用該目標(biāo)服務(wù);
搜索模塊,用于若所述目標(biāo)服務(wù)不是本地服務(wù),則從遠(yuǎn)程服務(wù)列表中搜索所述目標(biāo)服務(wù);
第一遠(yuǎn)程調(diào)用模塊,用于若所述目標(biāo)服務(wù)在所述遠(yuǎn)程服務(wù)列表中,則根據(jù)所述遠(yuǎn)程服務(wù)列表中的所述目標(biāo)服務(wù)的服務(wù)信息,從遠(yuǎn)程服務(wù)器調(diào)用所述目標(biāo)服務(wù),獲取調(diào)用結(jié)果;
第二遠(yuǎn)程調(diào)用模塊,用于若所述目標(biāo)服務(wù)不在所述遠(yuǎn)程服務(wù)列表中,則根據(jù)注冊服務(wù)器提供的服務(wù)信息,從遠(yuǎn)程服務(wù)器調(diào)用所述目標(biāo)服務(wù),獲取調(diào)用結(jié)果。
在本發(fā)明實施例中,通過自動從注冊服務(wù)器或遠(yuǎn)程服務(wù)緩存列表中查找目標(biāo)服務(wù)的方式,使得用戶可以在目標(biāo)服務(wù)的部署位置發(fā)生改變時,自動找到并調(diào)用目標(biāo)服務(wù),降低了開發(fā)人員的工作量,且有利于整個系統(tǒng)更加穩(wěn)定地運行。
附圖說明
為了更清楚地說明本發(fā)明實施例中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1是本發(fā)明實施例提供的跨平臺的服務(wù)調(diào)用方法本地服務(wù)器側(cè)的實現(xiàn)流程圖;
圖2是本發(fā)明實施例提供的跨平臺的服務(wù)調(diào)用方法本地服務(wù)器側(cè)s105的具體實現(xiàn)流程圖;
圖3是本發(fā)明實施例提供的跨平臺的服務(wù)調(diào)用方法本地服務(wù)器側(cè)s205的具體實現(xiàn)流程圖;
圖4是本發(fā)明實施例提供的跨平臺的服務(wù)調(diào)用方法本地服務(wù)器側(cè)s106的具體實現(xiàn)流程圖;
圖5是本發(fā)明實施例提供的跨平臺的服務(wù)調(diào)用方法的系統(tǒng)流程圖;圖6是本發(fā)明實施例提供的跨平臺的服務(wù)調(diào)用方法本地服務(wù)器側(cè)的結(jié)構(gòu)框圖;
圖7是本發(fā)明實施例提供的跨平臺的服務(wù)調(diào)用方法系統(tǒng)的結(jié)構(gòu)框圖。
具體實施方式
以下描述中,為了說明而不是為了限定,提出了諸如特定系統(tǒng)結(jié)構(gòu)、技術(shù)之類的具體細(xì)節(jié),以便透徹理解本發(fā)明實施例。然而,本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)清楚,在沒有這些具體細(xì)節(jié)的其它實施例中也可以實現(xiàn)本發(fā)明。在其它情況中,省略對眾所周知的系統(tǒng)、裝置、電路以及方法的詳細(xì)說明,以免不必要的細(xì)節(jié)妨礙本發(fā)明的描述。
本發(fā)明實施例接收用戶調(diào)用目標(biāo)服務(wù)的指令;檢測所述目標(biāo)服務(wù)是否為本地服務(wù);若所述目標(biāo)服務(wù)是本地服務(wù),則從本地服務(wù)器直接調(diào)用該目標(biāo)服務(wù);若所述目標(biāo)服務(wù)不是本地服務(wù),則從遠(yuǎn)程服務(wù)列表中搜索所述目標(biāo)服務(wù);若所述目標(biāo)服務(wù)在所述遠(yuǎn)程服務(wù)列表中,則根據(jù)所述遠(yuǎn)程服務(wù)列表中的所述目標(biāo)服務(wù)的服務(wù)信息,從遠(yuǎn)程服務(wù)器調(diào)用所述目標(biāo)服務(wù),獲取調(diào)用結(jié)果;若所述目標(biāo)服務(wù)不在所述遠(yuǎn)程服務(wù)列表中,則根據(jù)注冊服務(wù)器提供的服務(wù)信息,從遠(yuǎn)程服務(wù)器調(diào)用所述目標(biāo)服務(wù),獲取調(diào)用結(jié)果。為了說明本發(fā)明所述的技術(shù)方案,下面通過具體實施例來進(jìn)行說明。
圖1示出了本發(fā)明實施例提供的跨平臺的服務(wù)調(diào)用方法本地服務(wù)器側(cè)的實現(xiàn)流程,詳述如下:
在s101中,接收用戶調(diào)用目標(biāo)服務(wù)的指令。
目標(biāo)服務(wù)指用戶根據(jù)自己的需要所指定的業(yè)務(wù)服務(wù),這里的業(yè)務(wù)服務(wù)可以實現(xiàn)某一些功能,幫助用戶達(dá)到他們使用本地服務(wù)器的目的。目標(biāo)服務(wù)可以由用戶自己編碼實現(xiàn)的業(yè)務(wù)邏輯組成,也可以由已存在的業(yè)務(wù)邏輯組成。
用戶通過終端指定一個目標(biāo)服務(wù),并向本地服務(wù)器發(fā)送調(diào)用目標(biāo)服務(wù)的指令,之后本地服務(wù)器接收用戶調(diào)用目標(biāo)服務(wù)的指令。
在s102中,檢測所述目標(biāo)服務(wù)是否為本地服務(wù)。
由于在云計算中,每個服務(wù)器中存放的服務(wù)程序是相對比較少的,大量的服務(wù)可能存放在不同的遠(yuǎn)程服務(wù)器中,而不是在用戶直接可以使用到的本地服務(wù)器中,因此當(dāng)本地服務(wù)器接收到調(diào)用目標(biāo)服務(wù)的指令之后,首先會在本地服務(wù)器中檢測是否有用戶需要的目標(biāo)服務(wù)。
在s103中,若所述目標(biāo)服務(wù)是本地服務(wù),則從本地服務(wù)器直接調(diào)用該目標(biāo)服務(wù)。
在s104中,若所述目標(biāo)服務(wù)不是本地服務(wù),則從遠(yuǎn)程服務(wù)列表中搜索所述目標(biāo)服務(wù)。
遠(yuǎn)程服務(wù)列表存儲在本地服務(wù)器當(dāng)中,存放著部分遠(yuǎn)程服務(wù)的服務(wù)信息。這些服務(wù)信息包括某個遠(yuǎn)程服務(wù)所在的服務(wù)器的機(jī)器地址、服務(wù)端口等信息。通過這些服務(wù)信息,本地服務(wù)器可以找到目標(biāo)服務(wù)所在的遠(yuǎn)程服務(wù)器。需要注意的是遠(yuǎn)程服務(wù)列表中只包含著部分服務(wù)的服務(wù)信息,并不是所有的目標(biāo)服務(wù)都可以在遠(yuǎn)程服務(wù)列表中被搜索到。
在s105中,若所述目標(biāo)服務(wù)在所述遠(yuǎn)程服務(wù)列表中,則根據(jù)所述遠(yuǎn)程服務(wù)列表中的所述目標(biāo)服務(wù)的服務(wù)信息,從遠(yuǎn)程服務(wù)器調(diào)用所述目標(biāo)服務(wù),獲取調(diào)用結(jié)果。
圖2示出了本發(fā)明實施例提供的跨平臺的服務(wù)調(diào)用方法本地服務(wù)器側(cè)s105的具體實現(xiàn)流程.
在s201中,生成服務(wù)請求報文。
本地服務(wù)器將需要目標(biāo)服務(wù)處理的業(yè)務(wù)數(shù)據(jù)進(jìn)行序列化處理,序列化處理的目的是將一個數(shù)據(jù)結(jié)構(gòu)如二叉樹數(shù)據(jù)結(jié)構(gòu)變成一個char數(shù)組或者一個string字符串,方便網(wǎng)絡(luò)傳輸。
序列化處理將一個對象的狀態(tài)特性分解成字節(jié)流,然后在網(wǎng)絡(luò)傳輸結(jié)束后,經(jīng)過反序列化處理重構(gòu)出原數(shù)據(jù)特性。
在本發(fā)明實施例中,業(yè)務(wù)數(shù)據(jù)的序列化處理是將dom(documentobjectmodel文檔對象模型)對象轉(zhuǎn)換成可傳輸?shù)膞ml(extensiblemarkuplanguage可擴(kuò)展標(biāo)記語言)字符串,實現(xiàn)序列化處理的具體代碼如下:
當(dāng)業(yè)務(wù)數(shù)據(jù)序列化之后,需要把字符串打包進(jìn)一個服務(wù)請求報文中。
在s202中,根據(jù)所述目標(biāo)服務(wù)的服務(wù)信息,建立與所述目標(biāo)服務(wù)所在的遠(yuǎn)程服務(wù)器之間的連接。
由于s105的先決條件是目標(biāo)服務(wù)就在遠(yuǎn)程服務(wù)列表中,因此可以直接從存儲在本地服務(wù)器的遠(yuǎn)程服務(wù)列表中查找到目標(biāo)服務(wù)的服務(wù)信息。服務(wù)信息包括目標(biāo)服務(wù)所在的服務(wù)器的機(jī)器地址、服務(wù)端口等信息。通過這些服務(wù)信息,本地服務(wù)器可以找到目標(biāo)服務(wù)所在的遠(yuǎn)程服務(wù)器,并建立socket長連接。
socket是應(yīng)用層與tcp/ip協(xié)議族通信的中間軟件抽象層,它是一組接口,把復(fù)雜的tcp/ip協(xié)議族隱藏在socket接口后面。長連接指兩個服務(wù)器先建立通訊連接,連接建立后不斷開,然后再進(jìn)行報文發(fā)送和接收。
在本發(fā)明實施例中,javascript上實現(xiàn)序列化處理的具體代碼如下:
在s203中,將所述服務(wù)請求報文發(fā)送至所述目標(biāo)服務(wù)所在的遠(yuǎn)程服務(wù)器。
在s204中,接收所述目標(biāo)服務(wù)所在的遠(yuǎn)程服務(wù)器發(fā)送的應(yīng)答報文。
遠(yuǎn)程服務(wù)器在接收到服務(wù)請求報文并處理完數(shù)據(jù)后,會將處理結(jié)果打包進(jìn)一個應(yīng)答報文,具體步驟將在遠(yuǎn)程服務(wù)器側(cè)的實施例詳細(xì)介紹。本地服務(wù)器接收這個由遠(yuǎn)程服務(wù)器發(fā)送來的應(yīng)答報文。
在s205中,根據(jù)所述應(yīng)答報文,解析出服務(wù)調(diào)用結(jié)果。
圖3示出了本發(fā)明實施例提供的跨平臺的服務(wù)調(diào)用方法本地服務(wù)器側(cè)s205的具體實現(xiàn)流程,詳述如下:
在s301中,從所述應(yīng)答報文中解析出業(yè)務(wù)數(shù)據(jù)。
首先將應(yīng)答報文解包得到字符串形式的調(diào)用結(jié)果。
在s302中,將所述業(yè)務(wù)數(shù)據(jù)進(jìn)行反序列化處理,得到服務(wù)調(diào)用結(jié)果。
通過反序列化處理,得到最終的調(diào)用結(jié)果。
在發(fā)明實施例中,將xml字符串的調(diào)用結(jié)果反序列化處理成dom對象得到最終的調(diào)用結(jié)果。
在s106中,若所述目標(biāo)服務(wù)不在所述遠(yuǎn)程服務(wù)列表中,則根據(jù)注冊服務(wù)器提供的服務(wù)信息,從遠(yuǎn)程服務(wù)器調(diào)用所述目標(biāo)服務(wù),獲取調(diào)用結(jié)果,并且將從所述注冊服務(wù)器獲取的服務(wù)信息緩存到所述遠(yuǎn)程服務(wù)列表中。
圖4示出了本發(fā)明實施例提供的跨平臺的服務(wù)調(diào)用方法本地服務(wù)器側(cè)s106的具體實現(xiàn)流程,詳述如下:
在s401中,建立與所述注冊服務(wù)器的連接。
由于在s106的情況下,本地服務(wù)器中的遠(yuǎn)程服務(wù)列表不含有用戶希望使用的目標(biāo)服務(wù),因此本地服務(wù)器在沒有搜索到相應(yīng)服務(wù)后,會建立與注冊服務(wù)器的連接以找到相應(yīng)的目標(biāo)服務(wù)的服務(wù)信息。
注冊服務(wù)器也是一個服務(wù)器,用于集中治理分散在不同系統(tǒng)(服務(wù)器)上的應(yīng)用服務(wù)。當(dāng)一個應(yīng)用服務(wù)的信息改變時(如一個應(yīng)用服務(wù)的部署位置發(fā)生改變),應(yīng)用服務(wù)所在的服務(wù)器會自動通知注冊服務(wù)器,注冊服務(wù)器會根據(jù)相應(yīng)的改變,更新數(shù)據(jù)以保證注冊服務(wù)器內(nèi)的數(shù)據(jù)的實效性,保證各個服務(wù)器可以從注冊服務(wù)器內(nèi)查到最新的應(yīng)用服務(wù)的服務(wù)信息。
在本實施例中,本地服務(wù)器與注冊服務(wù)器建立socket長連接,具體的連接建立方法及說明已在前文介紹,不在此贅述。
在s402中,向所述注冊服務(wù)器查詢所述目標(biāo)服務(wù)的服務(wù)信息。
由于注冊服務(wù)器一定會含有本系統(tǒng)內(nèi)所有服務(wù)器上的所有服務(wù)的服務(wù)信息,因此注冊服務(wù)器會向本地服務(wù)器返回目標(biāo)服務(wù)的服務(wù)信息。服務(wù)信息包括目標(biāo)服務(wù)所在的服務(wù)器的機(jī)器地址、服務(wù)端口等信息。通過這些服務(wù)信息,本地服務(wù)器可以找到目標(biāo)服務(wù)所在的遠(yuǎn)程服務(wù)器。
本地服務(wù)器會組裝一個查詢服務(wù)報文,通過已建立好的連接發(fā)送給注冊服務(wù)器以查詢目標(biāo)服務(wù)的服務(wù)信息。
在s403中,接收所述注冊服務(wù)器返回的所述服務(wù)信息,并根據(jù)所述服務(wù)信息,建立與所述目標(biāo)服務(wù)所在的遠(yuǎn)程服務(wù)器之間的連接。
將所述服務(wù)請求報文發(fā)送至所述目標(biāo)服務(wù)所在的遠(yuǎn)程服務(wù)器。
在s404中,生成服務(wù)請求報文。
本地服務(wù)器將需要目標(biāo)服務(wù)處理的業(yè)務(wù)數(shù)據(jù)進(jìn)行序列化處理,序列化處理的目的是將一個數(shù)據(jù)結(jié)構(gòu)如二叉樹數(shù)據(jù)結(jié)構(gòu)變成一個char數(shù)組或者一個string字符串,方便網(wǎng)絡(luò)傳輸。
序列化處理將一個對象的狀態(tài)特性分解成字節(jié)流,然后在網(wǎng)絡(luò)傳輸結(jié)束后,經(jīng)過反序列化處理重構(gòu)出原數(shù)據(jù)特性。
在本發(fā)明實施例中,業(yè)務(wù)數(shù)據(jù)的序列化處理是將dom(documentobjectmodel文檔對象模型)對象轉(zhuǎn)換成可傳輸?shù)膞ml(extensiblemarkuplanguage可擴(kuò)展標(biāo)記語言)字符串。
在s405中,將所述服務(wù)請求報文發(fā)送至所述目標(biāo)服務(wù)所在的遠(yuǎn)程服務(wù)器。
在s406中,接收所述目標(biāo)服務(wù)所在的遠(yuǎn)程服務(wù)器發(fā)送的應(yīng)答報文。
遠(yuǎn)程服務(wù)器在接收到服務(wù)請求報文并處理完數(shù)據(jù)后,會將處理結(jié)果打包進(jìn)一個應(yīng)答報文,具體步驟將在遠(yuǎn)程服務(wù)器側(cè)的實施例詳細(xì)介紹。本地服務(wù)器接收這個由遠(yuǎn)程服務(wù)器發(fā)送來的應(yīng)答報文。
在s407中,根據(jù)所述應(yīng)答報文,解析出服務(wù)調(diào)用結(jié)果。
從所述應(yīng)答報文中解析出業(yè)務(wù)數(shù)據(jù)。
將應(yīng)答報文解包得到字符串形式的調(diào)用結(jié)果。
將所述業(yè)務(wù)數(shù)據(jù)進(jìn)行反序列化處理,得到服務(wù)調(diào)用結(jié)果。
通過反序列化處理,得到最終的調(diào)用結(jié)果。
在發(fā)明實施例中,將xml字符串的調(diào)用結(jié)果反序列化處理成dom對象得到最終的調(diào)用結(jié)果。
圖5示出了本發(fā)明實施例提供的跨平臺的服務(wù)調(diào)用方法的系統(tǒng)流程,詳述如下:
需要注意的是,圖5介紹的是當(dāng)目標(biāo)服務(wù)不在本地服務(wù)器時,且在本地服務(wù)器上的遠(yuǎn)程服務(wù)列表中也查找不到目標(biāo)服務(wù)后的系統(tǒng)流程。
在s501中,本地服務(wù)器建立與注冊服務(wù)器的連接。
由于在s106的情況下,本地服務(wù)器中的遠(yuǎn)程服務(wù)列表不含有用戶希望使用的目標(biāo)服務(wù),因此本地服務(wù)器在沒有搜索到相應(yīng)服務(wù)后,會建立與注冊服務(wù)器的連接以找到相應(yīng)的目標(biāo)服務(wù)的服務(wù)信息。
注冊服務(wù)器也是一個服務(wù)器,用于集中治理分散在不同系統(tǒng)(服務(wù)器)上的應(yīng)用服務(wù)。當(dāng)一個應(yīng)用服務(wù)的信息改變時(如一個應(yīng)用服務(wù)的部署位置發(fā)生改變),應(yīng)用服務(wù)所在的服務(wù)器會自動通知注冊服務(wù)器,注冊服務(wù)器會根據(jù)相應(yīng)的改變,更新數(shù)據(jù)以保證注冊服務(wù)器內(nèi)的數(shù)據(jù)的實效性,保證各個服務(wù)器可以從注冊服務(wù)器內(nèi)查到最新的應(yīng)用服務(wù)的服務(wù)信息。
在本實施例中,本地服務(wù)器與注冊服務(wù)器建立socket長連接,具體的連接建立方法及說明已在前文介紹,不在此贅述。
在s502中,本地服務(wù)器向所述注冊服務(wù)器查詢目標(biāo)服務(wù)的服務(wù)信息。
由于注冊服務(wù)器一定會含有本系統(tǒng)內(nèi)所有服務(wù)器上的所有服務(wù)的服務(wù)信息,因此注冊服務(wù)器會向本地服務(wù)器返回目標(biāo)服務(wù)的服務(wù)信息。服務(wù)信息包括目標(biāo)服務(wù)所在的服務(wù)器的機(jī)器地址、服務(wù)端口等信息。通過這些服務(wù)信息,本地服務(wù)器可以找到目標(biāo)服務(wù)所在的遠(yuǎn)程服務(wù)器。
本地服務(wù)器會組裝一個查詢服務(wù)報文,通過已建立好的連接發(fā)送給注冊服務(wù)器以查詢目標(biāo)服務(wù)的服務(wù)信息。
在s503中,注冊服務(wù)器返回所述目標(biāo)服務(wù)的服務(wù)信息。
在s504中,本地服務(wù)器接收所述服務(wù)信息,并根據(jù)所述服務(wù)信息,建立與所述目標(biāo)服務(wù)所在的遠(yuǎn)程服務(wù)器之間的連接。
在s505中,本地服務(wù)器向所述遠(yuǎn)程服務(wù)器發(fā)送服務(wù)請求報文。
在s506中,遠(yuǎn)程服務(wù)器接收所述服務(wù)請求報文。
在s507中,遠(yuǎn)程服務(wù)器解析所述服務(wù)請求報文,獲取業(yè)務(wù)數(shù)據(jù),并通過所述目標(biāo)服務(wù)處理所述業(yè)務(wù)數(shù)據(jù),得到服務(wù)調(diào)用結(jié)果。
將服務(wù)請求報文解包得到字符串形式的業(yè)務(wù)數(shù)據(jù)。
將所述業(yè)務(wù)數(shù)據(jù)進(jìn)行反序列化處理,得到遠(yuǎn)程服務(wù)器可直接處理的業(yè)務(wù)數(shù)據(jù)。
在發(fā)明實施例中,將xml字符串的調(diào)用結(jié)果反序列化處理成dom對象得到最終的業(yè)務(wù)數(shù)據(jù)。
通過所述目標(biāo)服務(wù)處理所述業(yè)務(wù)數(shù)據(jù),得到服務(wù)調(diào)用結(jié)果。
在s508中,遠(yuǎn)程服務(wù)器將所述服務(wù)調(diào)用結(jié)果打包并返回到所述服務(wù)請求報文的源服務(wù)器。
在s509中,接收所述目標(biāo)服務(wù)所在的遠(yuǎn)程服務(wù)器發(fā)送的應(yīng)答報文;
遠(yuǎn)程服務(wù)器在接收到服務(wù)請求報文并處理完數(shù)據(jù)后,會將處理結(jié)果打包進(jìn)一個應(yīng)答報文,具體步驟將在遠(yuǎn)程服務(wù)器側(cè)的實施例詳細(xì)介紹。本地服務(wù)器接收這個由遠(yuǎn)程服務(wù)器發(fā)送來的應(yīng)答報文。
在s510中,根據(jù)所述應(yīng)答報文,解析出服務(wù)調(diào)用結(jié)果。
從所述應(yīng)答報文中解析出業(yè)務(wù)數(shù)據(jù)。
將應(yīng)答報文解包得到字符串形式的調(diào)用結(jié)果。
將所述業(yè)務(wù)數(shù)據(jù)進(jìn)行反序列化處理,得到服務(wù)調(diào)用結(jié)果。
通過反序列化處理,得到最終的調(diào)用結(jié)果。
在發(fā)明實施例中,將xml字符串的調(diào)用結(jié)果反序列化處理成dom對象得到最終的調(diào)用結(jié)果。
將服務(wù)請求報文解包得到字符串形式的調(diào)用結(jié)果。
將所述業(yè)務(wù)數(shù)據(jù)進(jìn)行反序列化處理,得到服務(wù)調(diào)用結(jié)果。
在發(fā)明實施例中,將xml字符串的調(diào)用結(jié)果反序列化處理成dom對象得到最終的調(diào)用結(jié)果。
對應(yīng)于上文實施例所述的跨平臺的服務(wù)調(diào)用方法本地服務(wù)器側(cè)的方法流程,圖6示出了本發(fā)明實施例提供的跨平臺的服務(wù)調(diào)用方法本地服務(wù)器側(cè)的結(jié)構(gòu)框圖,該裝置包括:
接收模塊601,用于接收用戶調(diào)用目標(biāo)服務(wù)的指令;
檢測模塊602,用于檢測所述目標(biāo)服務(wù)是否為本地服務(wù);
本地調(diào)用模塊603,若所述目標(biāo)服務(wù)是本地服務(wù),則從本地服務(wù)器直接調(diào)用該目標(biāo)服務(wù);
搜索模塊604,用于若所述目標(biāo)服務(wù)不是本地服務(wù),則從遠(yuǎn)程服務(wù)列表中搜索所述目標(biāo)服務(wù);
第一遠(yuǎn)程調(diào)用模塊605,用于若所述目標(biāo)服務(wù)在所述遠(yuǎn)程服務(wù)列表中,則根據(jù)所述遠(yuǎn)程服務(wù)列表中的所述目標(biāo)服務(wù)的服務(wù)信息,從遠(yuǎn)程服務(wù)器調(diào)用所述目標(biāo)服務(wù),獲取調(diào)用結(jié)果;
第二遠(yuǎn)程調(diào)用模塊606,用于若所述目標(biāo)服務(wù)不在所述遠(yuǎn)程服務(wù)列表中,則根據(jù)注冊服務(wù)器提供的服務(wù)信息,從遠(yuǎn)程服務(wù)器調(diào)用所述目標(biāo)服務(wù),獲取調(diào)用結(jié)果,并且將從所述注冊服務(wù)器獲取的服務(wù)信息緩存到所述遠(yuǎn)程服務(wù)列表中。
進(jìn)一步地,第一遠(yuǎn)程調(diào)用模塊包括:
第一報文生成子模塊,用于生成服務(wù)請求報文;
第一連接子模塊,用于根據(jù)所述目標(biāo)服務(wù)的服務(wù)信息,建立與所述目標(biāo)服務(wù)所在的遠(yuǎn)程服務(wù)器之間的連接;
第一發(fā)送子模塊,用于將所述服務(wù)請求報文發(fā)送至所述目標(biāo)服務(wù)所在的遠(yuǎn)程服務(wù)器;
第一接收子模塊,用于接收所述目標(biāo)服務(wù)所在的遠(yuǎn)程服務(wù)器發(fā)送的應(yīng)答報文;
第一解析子模塊,用于根據(jù)所述應(yīng)答報文,解析出服務(wù)調(diào)用結(jié)果。
進(jìn)一步地,解析子模塊包括:
第一業(yè)務(wù)數(shù)據(jù)生成子模塊,用于從所述應(yīng)答報文中解析出業(yè)務(wù)數(shù)據(jù);
第一調(diào)用結(jié)果生成子模塊,用于將所述業(yè)務(wù)數(shù)據(jù)進(jìn)行反序列化處理,得到服務(wù)調(diào)用結(jié)果。
進(jìn)一步地,第二遠(yuǎn)程調(diào)用模塊包括:
第二連接子模塊,用于建立與所述注冊服務(wù)器的連接;
查詢子模塊,用于向所述注冊服務(wù)器查詢所述目標(biāo)服務(wù)的服務(wù)信息;
第三連接子模塊,用于接收所述注冊服務(wù)器返回的所述服務(wù)信息,并根據(jù)所述服務(wù)信息,建立與所述目標(biāo)服務(wù)所在的遠(yuǎn)程服務(wù)器之間的連接;
第二報文生成子模塊,用于生成服務(wù)請求報文;
第二發(fā)送子模塊,用于將所述服務(wù)請求報文發(fā)送至所述目標(biāo)服務(wù)所在的遠(yuǎn)程服務(wù)器;
第二接收子模塊,用于接收所述目標(biāo)服務(wù)所在的遠(yuǎn)程服務(wù)器發(fā)送的應(yīng)答報文;
第二解析子模塊,用于根據(jù)所述應(yīng)答報文,解析出服務(wù)調(diào)用結(jié)果。
對應(yīng)于上文實施例所述的跨平臺的服務(wù)調(diào)用方法遠(yuǎn)程服務(wù)器側(cè)的方法流程,圖6示出了本發(fā)明實施例提供的跨平臺的服務(wù)調(diào)用方法系統(tǒng)的結(jié)構(gòu)框圖,該系統(tǒng)包括:
本地服務(wù)器701用于建立與注冊服務(wù)器的連接;
所述本地服務(wù)器還用于向所述注冊服務(wù)器查詢目標(biāo)服務(wù)的服務(wù)信息;
所述注冊服務(wù)器702用于返回所述目標(biāo)服務(wù)的服務(wù)信息;
所述本地服務(wù)器還用于接收所述服務(wù)信息,并根據(jù)所述服務(wù)信息,建立與所述目標(biāo)服務(wù)所在的遠(yuǎn)程服務(wù)器之間的連接;
所述本地服務(wù)器還用于向所述遠(yuǎn)程服務(wù)器發(fā)送服務(wù)請求報文;
所述遠(yuǎn)程服務(wù)器703用于接收所述服務(wù)請求報文;
所述遠(yuǎn)程服務(wù)器還用于解析所述服務(wù)請求報文,獲取業(yè)務(wù)數(shù)據(jù),并通過所述目標(biāo)服務(wù)處理所述業(yè)務(wù)數(shù)據(jù),得到服務(wù)調(diào)用結(jié)果;
所述遠(yuǎn)程服務(wù)器還用于將所述服務(wù)調(diào)用結(jié)果打包并返回到所述服務(wù)請求報文的源服務(wù)器。
所述本地服務(wù)器接收所述目標(biāo)服務(wù)所在的遠(yuǎn)程服務(wù)器發(fā)送的應(yīng)答報文;
所述本地服務(wù)器根據(jù)所述應(yīng)答報文,解析出服務(wù)調(diào)用結(jié)果。
所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為了描述的方便和簡潔,僅以上述各功能單元、模塊的劃分進(jìn)行舉例說明,實際應(yīng)用中,可以根據(jù)需要而將上述功能分配由不同的功能單元、模塊完成,即將所述裝置的內(nèi)部結(jié)構(gòu)劃分成不同的功能單元或模塊,以完成以上描述的全部或者部分功能。實施例中的各功能單元、模塊可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中,上述集成的單元既可以采用硬件的形式實現(xiàn),也可以采用軟件功能單元的形式實現(xiàn)。另外,各功能單元、模塊的具體名稱也只是為了便于相互區(qū)分,并不用于限制本申請的保護(hù)范圍。上述系統(tǒng)中單元、模塊的具體工作過程,可以參考前述方法實施例中的對應(yīng)過程,在此不再贅述。
本領(lǐng)域普通技術(shù)人員可以意識到,結(jié)合本文中所公開的實施例描述的各示例的單元及算法步驟,能夠以電子硬件、或者計算機(jī)軟件和電子硬件的結(jié)合來實現(xiàn)。這些功能究竟以硬件還是軟件方式來執(zhí)行,取決于技術(shù)方案的特定應(yīng)用和設(shè)計約束條件。專業(yè)技術(shù)人員可以對每個特定的應(yīng)用來使用不同方法來實現(xiàn)所描述的功能,但是這種實現(xiàn)不應(yīng)認(rèn)為超出本發(fā)明的范圍。
在本發(fā)明所提供的實施例中,應(yīng)該理解到,所揭露的裝置和方法,可以通過其它的方式實現(xiàn)。例如,以上所描述的系統(tǒng)實施例僅僅是示意性的,例如,所述模塊或單元的劃分,僅僅為一種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式,例如多個單元或組件可以結(jié)合或者可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通訊連接可以是通過一些接口,裝置或單元的間接耦合或通訊連接,可以是電性,機(jī)械或其它的形式。
所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元上??梢愿鶕?jù)實際的需要選擇其中的部分或者全部單元來實現(xiàn)本實施例方案的目的。
另外,在本發(fā)明各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以采用硬件的形式實現(xiàn),也可以采用軟件功能單元的形式實現(xiàn)。
所述集成的單元如果以軟件功能單元的形式實現(xiàn)并作為獨立的產(chǎn)品銷售或使用時,可以存儲在一個計算機(jī)可讀取存儲介質(zhì)中?;谶@樣的理解,本發(fā)明實施例的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機(jī)軟件產(chǎn)品存儲在一個存儲介質(zhì)中,包括若干指令用以使得一臺計算機(jī)設(shè)備(可以是個人計算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)或處理器(processor)執(zhí)行本發(fā)明實施例各個實施例所述方法的全部或部分步驟。而前述的存儲介質(zhì)包括:u盤、移動硬盤、只讀存儲器(rom,read-onlymemory)、隨機(jī)存取存儲器(ram,randomaccessmemory)、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
以上所述實施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照前述實施例對本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對前述各實施例所記載的技術(shù)方案進(jìn)行修改,或者對其中部分技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實施例技術(shù)方案的精神和范圍,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。