遠程過程調用方法、裝置及通信系統與流程
2023-07-20 11:22:11
本發明涉及通信技術領域,特別涉及一種遠程過程調用方法、裝置及通信系統。
背景技術:
RPC(Remote Procedure Call,遠程過程調用)是一種通過網絡從遠程計算機上請求服務的協議,當一臺設備上的程序調用另一臺設備的服務提供程序時,就稱之為一次RPC過程,請求服務的程序即為客戶端,服務提供程序即為服務端。
一次RPC過程具體可以包括下述過程:服務端上註冊有消息處理組件、服務鉤子組件和處理組件,客戶端要調用服務端提供的服務時會向服務端發送調用請求消息,服務端的消息處理組件在接收該調用請求信息後,發送給服務鉤子組件,該服務鉤子組件再向處理組件轉發該調用請求消息,由處理組件對該調用請求消息進行響應,並根據響應的結果生成調用響應消息,最後,通過該服務鉤子組件和該消息處理組件返回給客戶端。
然而,客戶端事實上也可以提供一些服務,但是上述RPC過程中,僅能由客戶端調用服務端提供的服務,而不能由服務端直接調用客戶端提供的服務。當服務端需要調用客戶端提供的服務時,需要在客戶端所在的設備上配置服務端,在服務端所在的設備上配置客戶端,由配置的客戶端調用配置的服務端提供的服務。
在實現本發明的過程中,發明人發現現有技術至少存在以下問題:服務端需要調用客戶端提供的服務時,不能直接調用,而僅能通過增加服務端和客戶端的方式調用,增加了通信對象的數目,造成了系統資源的浪費,提高了複雜性。
技術實現要素:
為了解決現有技術的問題,本發明實施例提供了一種遠程過程調用方法、裝置及通信系統。所述技術方案如下:
第一方面,提供了一種遠程過程調用方法,應用於客戶端中,所述客戶端註冊有第一消息處理組件、第一服務鉤子組件和第一處理組件,所述方法包括:
所述第一消息處理組件接收服務端發送的第一調用請求消息,向所述第一服務鉤子組件發送所述第一調用請求消息;
所述第一服務鉤子組件接收所述第一調用請求消息,向所述第一處理組件發送所述第一調用請求消息;
所述第一處理組件接收所述第一調用請求消息,對所述第一調用請求消息進行響應,根據響應結果生成第一調用響應消息,向所述第一服務鉤子組件發送所述第一調用響應消息;
所述第一服務鉤子組件接收所述第一調用響應消息,向所述第一消息處理組件發送所述第一調用響應消息;
所述第一消息處理組件接收所述第一調用響應消息,向所述服務端發送所述第一調用響應消息。
在一種可能實現方式中,所述第一服務鉤子組件包括多個服務接口,所述第一服務鉤子組件接收所述第一調用請求消息,向所述第一處理組件發送所述第一調用請求消息,包括:
所述第一服務鉤子組件接收到所述第一調用請求消息時,調用與所述第一調用請求消息對應的服務接口,向所述第一處理組件發送所述第一調用請求消息。
在另一種可能實現方式中,所述方法還包括:
所述第一消息處理組件向所述服務端發送第二調用請求消息,所述服務端用於對所述第二調用請求消息進行響應,並生成第二調用響應消息;
當所述第一消息處理組件接收到所述服務端發送的第二調用響應消息時,對所述第二調用響應消息進行處理。
在另一種可能實現方式中,所述方法還包括:
當所述第一消息處理組件接收到所述服務端發送的任一消息時,獲取所述消息中攜帶的屬性信息;
如果所述屬性信息為第一預設屬性信息,則確定所述消息為調用請求消息;
如果所述屬性信息為第二預設屬性信息,則確定所述消息為調用響應消息。
在另一種可能實現方式中,所述消息包括消息頭和消息體,所述消息頭攜帶所述屬性信息。
第二方面,提供了一種遠程過程調用方法,應用於服務端中,所述服務端註冊有第二消息處理組件,所述方法包括:
所述第二消息處理組件向客戶端發送第一調用請求消息;
當所述第二消息處理組件接收到所述客戶端返回的第一調用響應消息時,對所述第一調用響應消息進行處理;
其中,所述客戶端註冊的第一消息處理組件用於接收所述第一調用請求消息,向註冊的第一服務鉤子組件發送所述第一調用請求消息,所述第一服務鉤子組件用於向註冊的第一處理組件發送所述第一調用請求消息,所述第一處理組件用於對所述第一調用請求消息進行響應,根據響應結果生成第一調用響應消息,並返回所述第一調用響應消息。
在一種可能實現方式中,所述服務端還註冊有第二服務鉤子組件和第二處理組件,所述方法還包括:
所述第二消息處理組件接收所述客戶端發送的第二調用請求消息,向所述第二服務鉤子組件發送所述第二調用請求消息;
所述第二服務鉤子組件接收所述第二調用請求消息,向所述第二處理組件發送所述第二調用請求消息;
所述第二處理組件接收所述第二調用請求消息,對所述第二調用請求消息進行響應,根據響應結果生成第二調用響應消息,向所述第二服務鉤子組件發送所述第二調用響應消息;
所述第二服務鉤子組件接收所述第二調用響應消息,向所述第二消息處理組件發送所述第二調用響應消息;
所述第二消息處理組件接收所述第二調用響應消息,向所述客戶端發送所述第二調用響應消息。
在另一種可能實現方式中,所述第二服務鉤子組件包括多個服務接口,所述第二服務鉤子組件接收所述第二調用請求消息,向所述第二處理組件發送所述第二調用請求消息,包括:
所述第二服務鉤子組件接收到所述第二調用請求消息時,調用與所述第二調用請求消息對應的服務接口,向所述第二處理組件發送所述第二調用請求消息。
在另一種可能實現方式中,所述方法還包括:
當所述第二消息處理組件接收到所述客戶端發送的任一消息時,獲取所述消息中攜帶的屬性信息;
如果所述屬性信息為第一預設屬性信息,則確定所述消息為調用請求消息;
如果所述屬性信息為第二預設屬性信息,則確定所述消息為調用響應消息。
在另一種可能實現方式中,所述消息包括消息頭和消息體,所述消息頭攜帶所述屬性信息。
第三方面,提供了一種客戶端,所述客戶端包括:
所述客戶端包括第一消息處理組件、第一服務鉤子組件和第一處理組件;
所述第一消息處理組件,用於接收服務端發送的第一調用請求消息,向所述第一服務鉤子組件發送所述第一調用請求消息;
所述第一服務鉤子組件,用於接收所述第一調用請求消息,向所述第一處理組件發送所述第一調用請求消息;
所述第一處理組件,用於接收所述第一調用請求消息,對所述第一調用請求消息進行響應,根據響應結果生成第一調用響應消息,向所述第一服務鉤子組件發送所述第一調用響應消息;
所述第一服務鉤子組件,用於接收所述第一調用響應消息,向所述第一消息處理組件發送所述第一調用響應消息;
所述第一消息處理組件,用於接收所述第一調用響應消息,向所述服務端發送所述第一調用響應消息。
在一種可能實現方式中,所述第一服務鉤子組件包括多個服務接口,所述第一服務鉤子組件用於所述第一服務鉤子組件接收到所述第一調用請求消息時,調用與所述第一調用請求消息對應的服務接口,向所述第一處理組件發送所述第一調用請求消息。
在另一種可能實現方式中,所述第一消息處理組件還用於向所述服務端發送第二調用請求消息,所述服務端用於對所述第二調用請求消息進行響應,並生成第二調用響應消息;
所述第一消息處理組件還用於當接收到所述服務端發送的第二調用響應消息時,對所述第二調用響應消息進行處理。
在另一種可能實現方式中,所述第一消息處理組件還用於當接收到所述服務端發送的任一消息時,獲取所述消息中攜帶的屬性信息;如果所述屬性信息為第一預設屬性信息,則確定所述消息為調用請求消息;如果所述屬性信息為第二預設屬性信息,則確定所述消息為調用響應消息。
在另一種可能實現方式中,所述消息包括消息頭和消息體,所述消息頭攜帶所述屬性信息。
第四方面,提供了一種服務端,所述服務端包括:
所述服務端包括第二消息處理組件;
所述第二消息處理組件,用於向客戶端發送第一調用請求消息;
所述第二消息處理組件,還用於當接收到所述客戶端返回的第一調用響應消息時,對所述第一調用響應消息進行處理;
其中,所述客戶端註冊的第一消息處理組件用於接收所述第一調用請求消息,向註冊的第一服務鉤子組件發送所述第一調用請求消息,所述第一服務鉤子組件用於向註冊的第一處理組件發送所述第一調用請求消息,所述第一處理組件用於對所述第一調用請求消息進行響應,根據響應結果生成第一調用響應消息,並返回所述第一調用響應消息。
在一種可能實現方式中,所述服務端還包括第二服務鉤子組件和第二處理組件;
所述第二消息處理組件用於接收客戶端發送的第二調用請求消息,向所述第二服務鉤子組件發送所述第二調用請求消息;
所述第二服務鉤子組件用於接收所述第二調用請求消息,向所述第二處理組件發送所述第二調用請求消息;
所述第二處理組件用於接收所述第二調用請求消息,對所述第二調用請求消息進行響應,根據響應結果生成第二調用響應消息,向所述第二服務鉤子組件發送所述第二調用響應消息;
所述第二服務鉤子組件用於接收所述第二調用響應消息,向所述第二消息處理組件發送所述第二調用響應消息;
所述第二消息處理組件用於接收所述第二調用響應消息,向所述客戶端發送所述第二調用響應消息。
在另一種可能實現方式中,所述第二服務鉤子組件包括多個服務接口,所述第二服務鉤子組件還用於所述第二服務鉤子組件接收到所述第二調用請求消息時,調用與所述第二調用請求消息對應的服務接口,向所述第二處理組件發送所述第二調用請求消息。
在另一種可能實現方式中,所述第二消息處理組件還用於當接收到所述客戶端發送的任一消息時,獲取所述消息中攜帶的屬性信息;如果所述屬性信息為第一預設屬性信息,則確定所述消息為調用請求消息;如果所述屬性信息為第二預設屬性信息,則確定所述消息為調用響應消息。
在另一種可能實現方式中,所述消息包括消息頭和消息體,所述消息頭攜帶所述屬性信息。
第五方面,提供了一種通信系統,所述通信系統包括第三方面所述的客戶端和第四方面的服務端。
本發明實施例提供的技術方案帶來的有益效果是:
本發明實施例提供的遠程過程調用方法、裝置及通信系統,通過在客戶端註冊第一服務鉤子組件,並在消息中增加方向信息,當服務端需要調用客戶端提供的服務時,第一消息處理組件接收來自服務端的第一調用請求消息,並將調用請求消息傳遞給第一服務鉤子組件,由第一服務鉤子組件傳遞給第一處理組件,第一處理組件對第一調用請求消息進行響應,並將第一調用響應消息經由第一服務鉤子組件和第一消息處理組件返回給服務端,從而在不增加服務端和客戶端的前提下,實現了服務端直接訪問客戶端提供的服務,同時也實現了客戶端和服務端功能對稱可互訪的通信系統,該通信系統只需要兩個通信對象,不需要重新創建通信對象,避免了增加通信對象的數目,降低了複雜性,提高了靈活性。
附圖說明
為了更清楚地說明本發明實施例中的技術方案,下面將對實施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對於本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。
圖1是本發明實施例提供的一種通信系統的結構示意圖;
圖2是本發明實施例提供的一種遠程過程調用方法的流程圖;
圖3是本發明實施例提供的一種遠程過程調用方法的流程圖;
圖4是本發明實施例提供的一種遠程過程調用方法的流程圖;
圖5是本發明實施例提供的一種客戶端的結構示意圖;
圖6是本發明實施例提供的一種服務端的結構示意圖;
圖7是本發明實施例提供的一種服務端的結構示意圖。
具體實施方式
下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例是本發明一部分實施例,而不是全部的實施例。基於本發明中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其他實施例,都屬於本發明保護的範圍。
圖1是本發明實施例提供的一種通信系統的結構示意圖。如圖1所示,該通信系統包括客戶端和服務端,該客戶端中至少包括第一消息處理組件、第一服務鉤子組件和第一處理組件,該服務端中至少包括第二消息處理組件、第二服務鉤子組件和第二處理組件。其中,該第一消息處理組件與該第二消息處理組件之間可以進行信息交互。
該通信系統為功能對稱可互訪的通信系統,該服務端可以向該客戶端提供服務,該客戶端可以直接調用該服務端提供的服務,而且,該客戶端也可以向服務端提供服務,該服務端可以直接調用該客戶端提供的服務。
當該服務端需要調用該客戶端提供的服務時,該第二消息處理組件向該第一消息處理組件發送調用請求消息,該第一消息處理組件接收到該調用請求消息後,通過第一服務鉤子組件傳遞給第一處理組件,該第一處理組件對該調用請求消息進行響應,並將調用響應消息經由該第一服務鉤子組件、第一消息處理組件返回該第二消息處理組件。
當該客戶端需要調用該服務端提供的服務時,該第一消息處理組件向該第二消息處理組件發送調用請求消息,該第二消息處理組件接收到該調用請求消息後,通過第二服務鉤子組件傳遞給第二處理組件,該第二處理組件對該調用請求消息進行響應,並將調用響應消息經由該第二服務鉤子組件、第二消息處理組件返回該第一消息處理組件。
可選地,該客戶端還可以包括用戶接口,用戶接口與第一消息處理組件可以進行交互,例如,用戶觸發的調用請求消息可以通過該用戶接口傳遞給該第一消息處理組件,或者該第一消息處理組件接收到的調用響應消息可以通過該用戶接口展示給用戶。
可選地,該服務端還可以包括用戶接口,用戶接口與第二消息處理組件可以進行交互,例如,該服務端的維護人員觸發的調用請求消息可以通過該用戶接口傳遞給該第二消息處理組件,或者該第二消息處理組件接收到的調用響應消息可以通過該用戶接口展示給維護人員。
圖2是本發明實施例提供的一種遠程過程調用方法的流程圖。該發明實施例的執行主體為客戶端,該客戶端註冊有第一消息處理組件、第一服務鉤子組件和第一處理組件,參見圖2,該方法包括:
201、該第一消息處理組件接收服務端發送的第一調用請求消息,向該第一服務鉤子組件發送該第一調用請求消息。
202、該第一服務鉤子組件接收該第一調用請求消息,向該第一處理組件發送該第一調用請求消息。
203、該第一處理組件接收該第一調用請求消息,對該第一調用請求消息進行響應,根據響應結果生成第一調用響應消息,向該第一服務鉤子組件發送該第一調用響應消息。
204、該第一服務鉤子組件接收該第一調用響應消息,向該第一消息處理組件發送該第一調用響應消息。
205、該第一消息處理組件接收該第一調用響應消息,向該服務端發送該第一調用響應消息。
綜上所述,本發明實施例提供的遠程過程調用方法,通過在客戶端註冊第一服務鉤子組件,當服務端需要調用客戶端提供的服務時,第一消息處理組件接收來自服務端的第一調用請求消息,並將第一調用請求消息傳遞給第一服務鉤子組件,由第一服務鉤子組件傳遞給第一處理組件,第一處理組件對第一調用請求消息進行響應,並將第一調用響應消息經由第一服務鉤子組件和第一消息處理組件返回給服務端,從而在不增加服務端和客戶端的前提下,實現了服務端直接調用客戶端提供的服務,避免了增加通信對象的數目,降低了複雜性,提高了系統靈活性。
可選地,該第一服務鉤子組件包括多個服務接口,該第一服務鉤子組件接收該第一調用請求消息,向該第一處理組件發送該第一調用請求消息,包括:
該第一服務鉤子組件接收到該第一調用請求消息時,調用與該第一調用請求消息對應的服務接口,向該第一處理組件發送該第一調用請求消息。
可選地,該方法還包括:
該第一消息處理組件向該服務端發送第二調用請求消息,該服務端用於對該第二調用請求消息進行響應,並生成第二調用響應消息;
當該第一消息處理組件接收到該服務端發送的第二調用響應消息時,對該第二調用響應消息進行處理。
上述所有可選技術方案,可以採用任意結合形成本發明的可選實施例,在此不再一一贅述。
圖3是本發明實施例提供的一種遠程過程調用方法的流程圖。該發明實施例的執行主體為服務端,該服務端註冊有第二消息處理組件,參見圖3,該方法包括:
301、該第二消息處理組件向該客戶端發送第一調用請求消息。
302、當該第二消息處理組件接收到該客戶端返回的第一調用響應消息時,對該第一調用響應消息進行處理。
其中,該客戶端註冊的第一消息處理組件用於接收該第一調用請求消息,向註冊的第一服務鉤子組件發送該第一調用請求消息,該第一服務鉤子組件用於向註冊的第一處理組件發送該第一調用請求消息,該第一處理組件用於對該第一調用請求消息進行響應,根據響應結果生成第一調用響應消息,並返回該第一調用響應消息。
綜上所述,本發明實施例提供的遠程過程調用方法,通過在客戶端註冊、第一服務鉤子組件,當服務端需要調用客戶端提供的服務時,第一消息處理組件接收來自服務端的第一調用請求消息,並將第一調用請求消息傳遞給第一服務鉤子組件,由第一服務鉤子組件傳遞給第一處理組件,第一處理組件對第一調用請求消息進行響應,並將第一調用響應消息經由第一服務鉤子組件和第一消息處理組件返回給服務端,從而在不增加服務端和客戶端的前提下,實現了服務端直接調用客戶端提供的服務,避免了增加通信對象的數目,降低了複雜性,提高了系統靈活性。
可選地,該服務端還包括、第二服務鉤子組件和第二處理組件,該方法還包括:
該第二消息處理組件接收該客戶端發送的第二調用請求消息,向該第二服務鉤子組件發送該第二調用請求消息;
該第二服務鉤子組件接收該第二調用請求消息,向該第二處理組件發送該第二調用請求消息;
該第二處理組件接收該第二調用請求消息,對該第二調用請求消息進行響應,根據響應結果生成第二調用響應消息,向該第二服務鉤子組件發送該第二調用響應消息;
該第二服務鉤子組件接收該第二調用響應消息,向該第二消息處理組件發送該第二調用響應消息;
該第二消息處理組件接收該第二調用響應消息,向該客戶端發送該第二調用響應消息。
上述所有可選技術方案,可以採用任意結合形成本發明的可選實施例,在此不再一一贅述。
圖4是本發明實施例提供的一種遠程過程調用方法的流程圖。該發明實施例的交互主體為客戶端和服務端,參見圖4,該方法包括:
401、在該客戶端的第一消息處理組件中註冊第一服務鉤子組件。
其中,該客戶端可以為手機、個人電腦等,該服務端可以為伺服器或者其他網絡設備等,本發明實施例對此均不做限定。
本發明實施例中,該客戶端中註冊有第一消息處理組件和第一處理組件,而為了實現該服務端能直接調用該客戶端提供的服務,在該客戶端中還註冊該第一服務鉤子組件。
具體地,該第一消息處理組件提供註冊接口,該客戶端通過調用該註冊接口,在該第一消息處理組件中註冊該第一服務鉤子組件,並在該第一服務鉤子組件中生成多個服務接口。其中,該多個服務接口是該第一處理組件提供的服務接口,該第一服務鉤子組件通過調用該多個服務接口,可以請求該第一處理組件提供相應的服務。
其中,該第一消息處理組件用於與服務端進行交互,接收來自服務端的消息並向客戶端的其他組件分發該消息,或者向服務端發送消息。該第一處理組件用於為服務端處理業務,並根據處理結果生成響應消息。該第一服務鉤子組件與該第一消息處理組件連接,並與該第一處理組件連接,可以作為該第一消息處理組件與該第一處理組件的中介,在該第一消息處理組件與該第一處理組件之間進行消息傳遞。也即是,該第一消息處理組件、該第一服務鉤子組件和該第一處理組件可以通過交互為該服務端提供服務。
402、該服務端註冊的第二消息處理組件向該客戶端發送第一調用請求消息。
該服務端註冊有第二消息處理組件、第二服務鉤子組件和第二處理組件。其中,該第二消息處理組件用於與客戶端進行交互,接收來自客戶端的消息並向服務端的其他組件分發該消息,或者向客戶端發送消息。該第二處理組件用於為客戶端處理業務,並根據處理結果生成響應消息,該第二服務鉤子組件與該第二消息處理組件連接,並與該第二處理組件連接,可以作為該第二消息處理組件與該第二處理組件的中介,在該第二消息處理組件與該第二處理組件之間進行消息傳遞。也即是,該第二消息處理組件、該第二服務鉤子組件和該第二處理組件可以通過交互為該客戶端提供服務。
本發明實施例中,當服務端要調用客戶端提供的服務,由客戶端為服務端處理業務時,向客戶端發送第一調用請求消息。其中,該第一調用請求消息用於指示客戶端為服務端處理業務。
實際上,該客戶端可處理的業務類型可以包括多種類型,例如提供圖片下載業務、提供視頻下載業務、處理圖片的業務等,本發明實施例對此不做限定。當該服務端需要該客戶端處理的業務類型不同時,所發送的第一調用請求消息的類型也不同。
例如,服務端需要下載客戶端的圖片時,向客戶端發送攜帶有圖片信息的第一調用請求消息,以請求該客戶端返回對應的圖片。而當服務端需要下載客戶端的視頻時,向客戶端發送攜帶有視頻信息的第一調用請求消息,以請求該客戶端返回對應的視頻。
403、該第一消息處理組件接收該服務端發送的第一調用請求消息,向該第一服務鉤子組件發送該第一調用請求消息。
本發明實施例僅是以該第一消息處理組件接收到第一調用請求消息為例進行說明,當接收到該第一調用請求消息時,向該第一服務鉤子組件發送該第一調用請求消息,以便通過該第一服務鉤子組件,向該第一處理組件發送該第一調用請求消息。
然而,在實際應用中,除了調用請求消息之外,該第一消息處理組件也會接收到其他屬性的消息,因此,每次接收到任一消息時,需要判斷該消息的屬性,根據判斷結果確定該消息的處理方式。
可選地,當該第一消息處理組件接收到該服務端發送的任一消息時,獲取該消息中攜帶的屬性信息,如果該屬性信息為第一預設屬性信息,則確定該消息為調用請求消息,而如果該屬性信息為第二預設屬性信息,則確定該消息為調用響應消息。
消息中攜帶的屬性信息用於確定該消息的屬性,該屬性信息可以分為第一預設屬性信息和第二預設屬性信息,該第一消息處理組件接收到任一消息時,通過判斷該消息中攜帶的屬性信息為第一預設屬性信息還是第二預設屬性信息,即可確定該消息為調用請求消息還是調用響應消息。
可選地,該消息包括消息頭和消息體,該消息頭攜帶該屬性信息。另外,該消息頭中除了屬性信息外,還可以包括消息ID(Identity,序列號)、消息長度、消息體序列化類型和消息的錯誤碼等,本發明實施例對此不做限定。
在本發明實施例提供的另一實施例中,如果該第一消息處理組件確定接收到調用響應消息,表示該消息是該客戶端針對該第一消息處理組件之前發送給該服務端的調用請求消息而返回的響應消息,也即是該服務端為該客戶端處理業務後得到的處理結果,此時,該第一消息處理組件對該調用響應消息進行處理。
具體地,該第一消息處理組件根據該調用響應消息生成操作記錄。或者,該第一消息處理組件可以將該調用響應消息返回給用戶接口,通過該用戶接口將該調用響應消息展示給用戶,以便用戶獲知該服務端的業務處理結果。
例如,當該調用響應消息為該服務端返回的圖片時,該第一消息處理組件存儲該圖片,或者將該圖片返回給用戶接口,展示給用戶。
404、該第一服務鉤子組件接收該第一調用請求消息,向該第一處理組件發送該第一調用請求消息。
可選地,該第一服務鉤子組件包括多個服務接口,該第一服務鉤子組件接收到該第一調用請求消息時,調用與該第一調用請求消息對應的服務接口,向該第一處理組件發送該第一調用請求消息。
該多個服務接口中,不同的服務接口所針對的業務類型也不同,每次該第一服務鉤子組件接收到第一調用請求消息時,可以根據該第一調用請求消息的類型,調用與該類型匹配的服務接口,向該第一處理組件發送該第一調用請求消息,此時該第一處理組件會按照所調用的服務接口的類型進行業務處理。
例如,當該服務端需要從該客戶端下載圖片時,則該第一服務鉤子組件根據攜帶有圖片信息的第一調用請求消息,啟用與下載圖片相關的服務接口,並通過該服務接口向第一處理組件發送該第一調用請求消息。或者,當該服務端需要從該客戶端下載視頻時,則該第一服務鉤子組件根據攜帶有視頻信息的第一調用請求消息,啟用與下載視頻相關的服務接口,並通過該服務接口向第一處理組件發送該第一調用請求消息。
405、該第一處理組件接收該第一調用請求消息,對該第一調用請求消息進行響應,根據響應結果生成第一調用響應消息,向該第一服務鉤子組件發送該第一調用響應消息。
基於上述步驟402中的舉例,該第一處理組件在接收到該攜帶有圖片信息的第一調用請求消息後,根據該圖片信息查找到對應的圖片,並向該第一服務鉤子組件發送第一調用響應消息,該第一調用響應消息包括查找到的圖片。
或者,該第一處理組件在接收到該攜帶有視頻信息的第一調用請求消息後,根據該視頻信息查找到對應的視頻,並向該第一服務鉤子組件發送第一調用響應消息,該第一調用響應消息包括查找到的視頻。
406、該第一服務鉤子組件接收該第一調用響應消息,向該第一消息處理組件發送該第一調用響應消息。
407、該第一消息處理組件接收該第一調用響應消息,向該服務端發送該第一調用響應消息。
408、當該第二消息處理組件接收到該客戶端返回的第一調用響應消息時,對該第一調用響應消息進行處理。
本發明實施例僅是以該第二消息處理組件確定接收到第一調用響應消息為例進行說明,然而,在實際應用中,除了調用響應消息之外,該第二消息處理組件也會接收到其他屬性的消息,因此,每次接收到任一消息時,需要判斷該消息的屬性,根據判斷結果確定該消息的處理方式。
可選地,當該第二消息處理組件接收到該客戶端發送的任一消息時,獲取該消息中攜帶的屬性信息,如果該屬性信息為第一預設屬性信息,則確定該消息為調用請求消息,而如果該屬性信息為第二預設屬性信息,則確定該消息為調用響應消息。
當該第二消息處理組件確定接收到該第一調用響應消息時,對該第一調用響應消息的處理方式與步驟403中該第一消息處理組件對該調用響應消息進行處理的方式類似,在此不再贅述。
而在本發明實施例提供的另一實施例中,如果該第二消息處理組件確定接收到調用請求消息,表示該消息是該客戶端發送給該服務端的調用請求消息,則該第二消息處理組件將該調用請求消息經由第二服務鉤子組件發送給第二處理組件,由該第二處理組件對該調用請求消息進行處理,處理方式與步驟405類似,在此不再贅述。
綜上所述,本發明實施例提供的遠程過程調用方法,通過在客戶端註冊第一服務鉤子組件,當服務端需要調用客戶端提供的服務時,第一消息處理組件接收來自服務端的第一調用請求消息,並將第一調用請求消息傳遞給第一服務鉤子組件,由第一服務鉤子組件傳遞給第一處理組件,第一處理組件對第一調用請求消息進行響應,並將第一調用響應消息經由第一服務鉤子組件和第一消息處理組件返回給服務端,從而在不增加服務端和客戶端的前提下,實現了服務端直接調用客戶端提供的服務,避免了增加通信對象的數目,降低了複雜性,提高了系統靈活性。
本發明實施例僅是以服務端調用客戶端提供的服務為例進行說明,而實際上,該服務端和該客戶端組成一個功能對稱可互訪的通信系統,也即是客戶端可以調用服務端提供的服務,服務端也可以調用客戶端提供的服務。
因此,在圖4所示實施例的基礎上,客戶端調用服務端所提供服務的過程可以包括:
409、該第一消息處理組件向該服務端發送第二調用請求消息。
本發明實施例以該第一調用請求消息表示服務端向客戶端發送的調用請求消息,以該第二調用請求消息表示客戶端向服務端發送的調用請求消息,也即是該第一調用請求消息和該第二調用請求消息的區別僅在於發送消息的設備不同,本發明實施例並未對該第一調用請求消息和該第二調用請求消息的具體內容進行限定。
410、該第二消息處理組件接收客戶端發送的第二調用請求消息,向該第二服務鉤子組件發送該第二調用請求消息。
可選地,當該第二消息處理組件接收到該客戶端發送的任一消息時,獲取該消息中攜帶的屬性信息,如果該屬性信息為第一預設屬性信息,則確定該消息為調用請求消息,如果該屬性信息為第二預設屬性信息,則確定該消息為調用響應消息。
可選地,該消息包括消息頭和消息體,該消息頭攜帶該屬性信息。
411、該第二服務鉤子組件接收該第二調用請求消息,向該第二處理組件發送該第二調用請求消息。
可選地,該第二服務鉤子組件包括多個服務接口,該第二服務鉤子組件接收到該第二調用請求消息時,調用與該第二調用請求消息對應的服務接口,向該第二處理組件發送該第二調用請求消息。
412、該第二處理組件接收該第二調用請求消息,對該第二調用請求消息進行響應,根據響應結果生成第二調用響應消息,向該第二服務鉤子組件發送該第二調用響應消息。
413、該第二服務鉤子組件接收該第二調用響應消息,向該第二消息處理組件發送該第二調用響應消息。
414、該第二消息處理組件接收該第二調用響應消息,向該客戶端發送該第二調用響應消息。
415、當該第一消息處理組件接收到該服務端發送的第二調用響應消息時,對該第二調用響應消息進行處理。
該步驟409至步驟415與上述步驟402至408類似,在此不再贅述。
本發明實施例中,為了對第一調用請求消息和第二調用請求消息加以區分,第一預設屬性信息可以包括第一方向信息和第二方向信息。對於任一消息來說,如果該消息的屬性信息為該第一方向信息時,表示該消息為服務端向客戶端發送的調用請求消息,如果該消息的屬性信息為該第二方向信息時,表示該消息為客戶端向服務端發送的調用請求消息。
為了對第一調用響應消息和第二調用響應消息加以區分,第二預設屬性信息可以包括第三方向信息和第四方向信息。對於任一消息來說,如果該消息的屬性信息為該第三方向信息時,表示該消息為服務端向客戶端發送的調用響應消息,如果該消息的屬性信息為該第四方向信息時,表示該消息為客戶端向服務端發送的調用響應消息。
例如,第一方向信息可以為call message等,第二方向信息可以為event message等,第三方向信息可以為call reply message等,第四方向信息可以為event reply message等,本發明實施例中均不做限定。
綜上所述,本發明實施例提供了功能對稱的客戶端和服務端,也即是提供了一種功能對稱可互訪的通信系統,客戶端可以訪問服務端的服務,服務端也可以訪問客戶端的功能。通過利用RPC的工作原理,在客戶端註冊第一服務鉤子組件,並在消息中增加方向信息,當服務端需要調用客戶端提供的服務時,第一消息處理組件接收來自服務端的第一調用請求消息,並將調用請求消息傳遞給第一服務鉤子組件,由第一服務鉤子組件傳遞給第一處理組件,第一處理組件對第一調用請求消息進行響應,並將第一調用響應消息經由第一服務鉤子組件和第一消息處理組件返回給服務端,從而在不增加服務端和客戶端的前提下,實現了服務端直接訪問客戶端提供的服務,同時也實現了客戶端和服務端功能對稱可互訪的通信系統,該通信系統只需要兩個通信對象,不需要重新創建通信對象,避免了增加通信對象的數目,降低了複雜性,提高了靈活性。
圖5是本發明實施例提供的一種客戶端的結構示意圖,參見圖5,該客戶端包括第一消息處理組件501、第一服務鉤子組件502和第一處理組件503。
該第一消息處理組件501用於接收服務端發送的第一調用請求消息,向該第一服務鉤子組件502發送該第一調用請求消息;
該第一服務鉤子組件502用於接收該第一調用請求消息,向該第一處理組件503發送該第一調用請求消息;
該第一處理組件503用於接收該第一調用請求消息,對該第一調用請求消息進行響應,根據響應結果生成第一調用響應消息,向該第一服務鉤子組件502發送該第一調用響應消息;
該第一服務鉤子組件502還用於接收該第一調用響應消息,向該第一消息處理組件501發送該第一調用響應消息;
該第一消息處理組件501還用於接收該第一調用響應消息,向該服務端發送該第一調用響應消息。
綜上所述,本發明實施例提供的客戶端,通過在客戶端註冊第一服務鉤子組件,當服務端需要調用客戶端提供的服務時,第一消息處理組件接收來自服務端的第一調用請求消息,並將第一調用請求消息傳遞給第一服務鉤子組件,由第一服務鉤子組件傳遞給第一處理組件,第一處理組件對第一調用請求消息進行響應,並將第一調用響應消息經由第一服務鉤子組件和第一消息處理組件返回給服務端,從而在不增加服務端和客戶端的前提下,實現了服務端直接調用客戶端提供的服務,避免了增加通信對象的數目,降低了複雜性,提高了系統靈活性。
在一種可能實現方式中,該第一服務鉤子組件502包括多個服務接口,該第一服務鉤子組件502,還用於該第一服務鉤子組件502接收到該第一調用請求消息時,調用與該第一調用請求消息對應的服務接口,向該第一處理組件503發送該第一調用請求消息。
在另一種可能實現方式中,該第一消息處理組件501,還用於向該服務端發送第二調用請求消息,該服務端用於對該第二調用請求消息進行響應,並生成第二調用響應消息;
該第一消息處理組件501,還用於當接收到該服務端發送的第二調用響應消息時,對該第二調用響應消息進行處理。
上述所有可選技術方案,可以採用任意結合形成本發明的可選實施例,在此不再一一贅述。
圖6是本發明實施例提供的一種服務端的結構示意圖,參見圖6,該服務端包括第二消息處理組件601。
該第二消息處理組件601用於向客戶端發送第一調用請求消息;
該第二消息處理組件601還用於當接收到該客戶端返回的第一調用響應消息時,對該第一調用響應消息進行處理;
其中,該客戶端註冊的第一消息處理組件用於接收該第一調用請求消息,向註冊的第一服務鉤子組件發送該第一調用請求消息,該第一服務鉤子組件用於向註冊的第一處理組件發送該第一調用請求消息,該第一處理組件用於對該第一調用請求消息進行響應,根據響應結果生成第一調用響應消息,並返回該第一調用響應消息。
綜上所述,本發明實施例提供的服務端,通過在服務端的第二消息處理組件向客戶端發送第一調用請求消息,並通過該第二消息處理組件在接收到該客戶端返回的第一調用響應消息時,對該第一調用響應消息進行處理,進而將該第一調用響應消息發送給服務端的用戶接口,從而在不增加服務端和客戶端的前提下,實現了服務端直接調用客戶端提供的服務,避免了增加通信對象的數目,降低了複雜性,提高了系統靈活性。
參見圖7,在一種可能實現方式中,該服務端還包括第二服務鉤子組件602和第二處理組件603。
該第二消息處理組件601,還用於接收客戶端發送的第二調用請求消息,向該第二服務鉤子組件602發送該第二調用請求消息;
該第二服務鉤子組件602,用於接收該第二調用請求消息,向該第二處理組件603發送該第二調用請求消息;
該第二處理組件603,用於接收該第二調用請求消息,對該第二調用請求消息進行響應,根據響應結果生成第二調用響應消息,向該第二服務鉤子組件602發送該第二調用響應消息;
該第二服務鉤子組件602,還用於接收該第二調用響應消息,向該第二消息處理組件601發送該第二調用響應消息;
該第二消息處理組件601,還用於接收該第二調用響應消息,向該客戶端發送該第二調用響應消息。
上述所有可選技術方案,可以採用任意結合形成本發明的可選實施例,在此不再一一贅述。
需要說明的是:上述實施例提供的客戶端和服務端在進行遠程過程調用時,僅以上述各功能模塊的劃分進行舉例說明,實際應用中,可以根據需要而將上述功能分配由不同的功能模塊完成,即將客戶端和服務端的內部結構劃分成不同的功能模塊,以完成以上描述的全部或者部分功能。另外,上述實施例提供的遠程過程調用方法實施例屬於同一構思,其具體實現過程詳見方法實施例,這裡不再贅述。
本領域普通技術人員可以理解實現上述實施例的全部或部分步驟可以通過硬體來完成,也可以通過程序來指令相關的硬體完成,所述的程序可以存儲於一種計算機可讀存儲介質中,上述提到的存儲介質可以是只讀存儲器,磁碟或光碟等。
以上所述僅為本發明的較佳實施例,並不用以限制本發明,凡在本發明的精神和原則之內,所作的任何修改、等同替換、改進等,均應包含在本發明的保護範圍之內。