亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種基于長(zhǎng)連接的雙向調(diào)用方法及系統(tǒng)的制作方法

文檔序號(hào):9527599閱讀:990來(lái)源:國(guó)知局
一種基于長(zhǎng)連接的雙向調(diào)用方法及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及一種基于長(zhǎng)連接的雙向調(diào)用方法及系統(tǒng),屬于網(wǎng)絡(luò)與信息安全技術(shù)領(lǐng) 域。
【背景技術(shù)】
[0002] 遠(yuǎn)程過(guò)程調(diào)用(RemoteProcedureCall,RPC),是一種計(jì)算機(jī)通信協(xié)議,使用非常 廣泛。RPC使得一臺(tái)計(jì)算機(jī)中運(yùn)行的程序可以直接調(diào)用另一臺(tái)計(jì)算機(jī)的子程序。遠(yuǎn)程過(guò)程 調(diào)用是一個(gè)分布式計(jì)算的客戶端一一服務(wù)器(CS)的模型??蛻舳丝梢韵蚍?wù)器發(fā)送一些 請(qǐng)求,并提供一定的參數(shù),服務(wù)器執(zhí)行特定的過(guò)程之后,將執(zhí)行結(jié)果返回的客戶端。
[0003] 經(jīng)過(guò)長(zhǎng)時(shí)間的發(fā)展,RPC已經(jīng)有比較多的實(shí)現(xiàn):
[0004] 1)SunRPC機(jī)制的實(shí)現(xiàn)是建立在UNIX4. 2BSDSOCKET和TCP、UDP協(xié)議的基 礎(chǔ)上,通過(guò)一組例程庫(kù)實(shí)現(xiàn)。RPCLibrary包括RPCroutines和XDR(ExternalData Representation)庫(kù)函數(shù),其中XDR庫(kù)是一個(gè)C函數(shù)的集合,是SUN制定的數(shù)據(jù)表示標(biāo)準(zhǔn)。 Java中普通的RPC方法只能傳送由XDR定義的數(shù)據(jù)類型,不能傳送對(duì)象。
[0005] 2)DCERPC機(jī)制是從Apollo的網(wǎng)絡(luò)計(jì)算系統(tǒng)(NetworkComputingSystem)發(fā)展 而來(lái)。該機(jī)制是用接口(interface)機(jī)制來(lái)協(xié)調(diào)客戶端向服務(wù)器的遠(yuǎn)程過(guò)程調(diào)用。每個(gè)接 口包括用接口定義語(yǔ)言(InterfaceDefinitionLanguage)來(lái)描述遠(yuǎn)程調(diào)用的一個(gè)或多個(gè) 過(guò)程,以及相應(yīng)的參數(shù)。
[0006] 3)JavaRMI機(jī)制,是純Java的遠(yuǎn)程方法調(diào)用,主要功能就是提供客戶端程序調(diào)用 位于遠(yuǎn)程服務(wù)器上對(duì)象所提供的方法,這樣可將部分邏輯處理放在遠(yuǎn)端服務(wù)器上。Java RMI是面向?qū)ο蟮腞PC。RMI對(duì)象時(shí)綁定在本地的,只有遠(yuǎn)程方法參數(shù)和返回值是通過(guò)網(wǎng)絡(luò) 傳輸?shù)摹?br>[0007] 由于JavaRMI應(yīng)該很廣泛,也能代表現(xiàn)有的較多的RPC,因此在此對(duì)其技術(shù)細(xì)節(jié) 進(jìn)行分析,并指出現(xiàn)有RPC的一些缺陷,最后提出新的解決方案。
[0008] RMI中有兩種特殊類型的對(duì)象,稱為客戶端存根和服務(wù)器端框架,這些是RMI的第 一層,也是基礎(chǔ)層??蛻舳舜娓淖饔檬亲鳛檫h(yuǎn)程服務(wù)器的代理,是客戶對(duì)象;而服務(wù)器端 框架則是從網(wǎng)路鏈接中讀取客戶端的調(diào)用參數(shù),向遠(yuǎn)程服務(wù)實(shí)現(xiàn)對(duì)象進(jìn)行調(diào)用,接受返回 值,然后通過(guò)鏈接返回到客戶端存根。
[0009] 遠(yuǎn)程引用層(RemoteReferenceLayer)則是負(fù)責(zé)專門的遠(yuǎn)程方法協(xié)議,這一層處 理底層遠(yuǎn)程方法調(diào)用連接的調(diào)用語(yǔ)義。RemoteReference提供RemoteRef對(duì)象,代表遠(yuǎn)程 對(duì)象的一個(gè)句柄,通過(guò)RemoteRef對(duì)象,可以執(zhí)行遠(yuǎn)程對(duì)象方法調(diào)用。
[0010] 傳輸層(TransportLayer),負(fù)責(zé)具體的客戶端到服務(wù)器端的基于流的網(wǎng)絡(luò)連接。 該層負(fù)責(zé)建立連接、對(duì)連接管理、監(jiān)控連接狀態(tài)、監(jiān)聽新的調(diào)用、維護(hù)遠(yuǎn)程對(duì)象表、定位遠(yuǎn)程 調(diào)用的調(diào)度程序等。
[0011] 現(xiàn)有的RPC基本都是專注于客戶端到服務(wù)器端的方法調(diào)用,也就是傳統(tǒng)的CS結(jié) 構(gòu),因此服務(wù)器端也就必須要處于網(wǎng)絡(luò)可發(fā)現(xiàn)狀態(tài),這樣客戶端才能連接上服務(wù)器?,F(xiàn)有的 RPC都存在如下可改進(jìn)的地方:
[0012] 1)只能由客戶端主動(dòng)向服務(wù)器端進(jìn)行遠(yuǎn)程過(guò)程調(diào)用,而不能支持服務(wù)器端到客戶 端的遠(yuǎn)程過(guò)程調(diào)用;
[0013] 2)僅支持網(wǎng)絡(luò)全局對(duì)象的方法調(diào)用,而不支持針對(duì)遠(yuǎn)程局部對(duì)象的訪問;
[0014] 在實(shí)際分布式網(wǎng)絡(luò)應(yīng)用中,RPC使用很廣泛。目前的RPC也能滿足大部分的遠(yuǎn)程 過(guò)程調(diào)用需求,然而還存在一些場(chǎng)景,比如:服務(wù)器要主動(dòng)推送數(shù)據(jù)到客戶端,或是調(diào)用客 戶端的一些對(duì)象的方法,或是在進(jìn)行遠(yuǎn)程過(guò)程調(diào)用的時(shí)候,要將本地局部對(duì)象的引用作為 參數(shù)。在客戶端與服務(wù)器端的過(guò)程調(diào)用比較多樣、密集的時(shí)候,以上場(chǎng)景都常出現(xiàn)。因此非 常需要針對(duì)這些需求的RPC。

【發(fā)明內(nèi)容】

[0015] 在傳統(tǒng)模式下,外網(wǎng)的應(yīng)用不能直接調(diào)用內(nèi)網(wǎng)應(yīng)用提供的遠(yuǎn)程對(duì)象服務(wù)。該RPC 組件突破了這一限制,使得內(nèi)網(wǎng)應(yīng)用可以向外網(wǎng)應(yīng)用提供一個(gè)遠(yuǎn)程對(duì)象,讓外網(wǎng)應(yīng)用能主 動(dòng)向內(nèi)網(wǎng)應(yīng)用發(fā)送消息。
[0016] 本發(fā)明所要解決的技術(shù)問題是,提供一種適用于不局限于局域網(wǎng)的基于長(zhǎng)連接的 雙向調(diào)用方法。
[0017] 本發(fā)明解決上述技術(shù)問題的技術(shù)方案如下:一種基于長(zhǎng)連接的雙向調(diào)用方法,具 體包括以下步驟:
[0018] 步驟1 :本地端作為連接的發(fā)起者,多個(gè)遠(yuǎn)程端作為連接的接收者,本地端分別發(fā) 起連接請(qǐng)求到多個(gè)遠(yuǎn)程端;
[0019] 步驟2 :每個(gè)遠(yuǎn)程端接收一個(gè)連接請(qǐng)求,本地端和每個(gè)遠(yuǎn)程端都相應(yīng)的獲得一個(gè) 進(jìn)行傳輸字節(jié)流的連接對(duì)象,本地端和遠(yuǎn)程端建立連接;
[0020] 步驟3 :本地端與遠(yuǎn)程端協(xié)商確定一個(gè)序列化協(xié)議,并使用該協(xié)議包裝字節(jié)流連 接,從而提供一個(gè)對(duì)象傳輸?shù)耐ǖ溃?br>[0021] 步驟4 :遠(yuǎn)程端將序列化的連接對(duì)象發(fā)送到本地端,本地端執(zhí)行通信線程,通信線 程內(nèi)包含棧,當(dāng)通信線程執(zhí)行本地代碼,通信線程內(nèi)棧的棧定節(jié)點(diǎn)成為活躍節(jié)點(diǎn);
[0022] 步驟5 :調(diào)用遠(yuǎn)程方法,通信線程執(zhí)行遠(yuǎn)程代碼,遠(yuǎn)程端出現(xiàn)遠(yuǎn)程通信線程,活躍 節(jié)點(diǎn)轉(zhuǎn)移到遠(yuǎn)程端,本地端進(jìn)入暫停狀態(tài);
[0023] 步驟6 :遠(yuǎn)程通信線程執(zhí)行完畢,遠(yuǎn)程通信線程結(jié)束,活躍節(jié)點(diǎn)從遠(yuǎn)程端轉(zhuǎn)移到本 地端;
[0024] 步驟7 :本地端恢復(fù)獲得活躍節(jié)點(diǎn),判斷當(dāng)前通信是否完成,如果是,執(zhí)行步驟8 ; 否則,執(zhí)行步驟5;
[0025] 步驟8 :判斷連接是否還存在于遠(yuǎn)程端,如果是,執(zhí)行步驟4 ;否則,執(zhí)行步驟9 ;
[0026] 步驟9 :關(guān)閉連接,清除無(wú)效連接對(duì)象。
[0027] 本發(fā)明的有益效果是:本發(fā)明通信雙方都可以互相調(diào)用對(duì)方提供的遠(yuǎn)程對(duì)象服 務(wù),不會(huì)受局域網(wǎng)的限制;提供一種類似于本地方法調(diào)用的方法調(diào)用方式,將遠(yuǎn)程對(duì)象的提 供過(guò)程設(shè)計(jì)成參數(shù)傳遞中的傳引用方式。
[0028] 在上述技術(shù)方案的基礎(chǔ)上,本發(fā)明還可以做如下改進(jìn)。
[0029] 進(jìn)一步,所述連接是持久的,被多個(gè)遠(yuǎn)程對(duì)象共享;通信雙方都可以在這個(gè)連接 上,為對(duì)方提供遠(yuǎn)程對(duì)象,實(shí)現(xiàn)"長(zhǎng)鏈接"和"雙向"的功能。
[0030] 進(jìn)一步,所述步驟9具體包括以下步驟:
[0031] 步驟9. 1 :本地端的序列化組件對(duì)象向底層的連接對(duì)象發(fā)送一個(gè)關(guān)閉連接請(qǐng)求;
[0032] 步驟9. 2:底層的連接對(duì)象收到關(guān)閉連接請(qǐng)求后,將關(guān)閉連接請(qǐng)求發(fā)送到遠(yuǎn)程的 連接對(duì)象,關(guān)閉連接;
[0033] 步驟9. 3:本地端刪除無(wú)效的序列化組件對(duì)象,遠(yuǎn)程端刪除無(wú)效的連接對(duì)象。
[0034] 進(jìn)一步,所述步驟1首先查詢本地端所支持的序列化協(xié)議,并將這些協(xié)議的名字 按照最期望使用到最不期望使用的順序排成一個(gè)序列,將該序列轉(zhuǎn)換為元素逗號(hào)分隔的字 符串,本地端將字符串發(fā)送到遠(yuǎn)程端。
[0035] 進(jìn)一步,所述步驟2具體包括以下步驟:
[0036] 步驟2. 1 :遠(yuǎn)程端接收連接請(qǐng)求和字符串,提取其中每一個(gè)元素;
[0037] 步驟2. 2:選取一個(gè)元素進(jìn)行檢查,判斷遠(yuǎn)程端是否支持,如果是,執(zhí)行步驟2. 4, 否則,執(zhí)行步驟2. 3;
[0038] 步驟2.3 :判斷是否還有元素未進(jìn)行檢查,如果是,執(zhí)行步驟2.2 ;否則,遠(yuǎn)程端向 本地端返回連接失敗信息,結(jié)束;
[0039] 步驟2. 4:本地端和遠(yuǎn)程端建立連接,遠(yuǎn)程端向本地端發(fā)布遠(yuǎn)程對(duì)象,本地端獲得 對(duì)應(yīng)遠(yuǎn)程對(duì)象的引用對(duì)象。
[0040] 進(jìn)一步,所述步驟5中的調(diào)用遠(yuǎn)程方法采用傳引用的方法,傳引用方法具體包括 以下步驟:
[0041] 步驟a:本地端在發(fā)起對(duì)遠(yuǎn)程端的遠(yuǎn)程過(guò)程調(diào)用時(shí),先在本地端檢查方法中的所 有參數(shù);
[0042] 步驟b:判斷參數(shù)中是否包括引用對(duì)象,如果是,執(zhí)行步驟c;否則,執(zhí)行步驟d;
[0043] 步驟c:本地端將此參數(shù)發(fā)布為遠(yuǎn)程對(duì)象;
[0044] 步驟d:將此調(diào)用封裝為請(qǐng)求對(duì)象和響應(yīng)對(duì)象,并發(fā)送到遠(yuǎn)程端進(jìn)行處理;
[0045] 步驟e:遠(yuǎn)程端接收到請(qǐng)求對(duì)象并解析,掃描遠(yuǎn)程引用參數(shù),并將其中作為引用傳 輸?shù)膮?shù)用相應(yīng)的遠(yuǎn)程對(duì)象代替;遠(yuǎn)程端繼續(xù)按照正常的過(guò)程執(zhí)行來(lái)自本地端的方法調(diào) 用;
[0046] 步驟f:遠(yuǎn)程端完成方法調(diào)用之后,搜集結(jié)果并判斷結(jié)果是否為遠(yuǎn)程對(duì)象;如果 是,執(zhí)
當(dāng)前第1頁(yè)1 2 3 4 5 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1