国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      基于boost的出站式rfi/rmi服務實現方法及通信系統的制作方法

      文檔序號:6383477閱讀:194來源:國知局

      專利名稱::基于boost的出站式rfi/rmi服務實現方法及通信系統的制作方法
      技術領域
      :本發(fā)明涉及計算機網絡通信
      技術領域
      ,尤其涉及一種基于BOOST的出站式RFI/RMI服務實現方法及通信系統。
      背景技術
      :SunJavaRMI(RemoteMethodInvocation)是一項由客戶端向服務器發(fā)起連接,發(fā)送請求并得到應答的信息交互技術。在分布式服務情況下,由接入計算機提供應答服務,并由中心調度計算機發(fā)出請求。在分布式計算模型中,當計算節(jié)點需要動態(tài)擴展時,中心節(jié)點無法直接獲得計算節(jié)點的連接地址,故需要由計算節(jié)點向中心節(jié)點發(fā)起連接同時提供服務接口,其具體的實現步驟是1)計算節(jié)點向中心節(jié)點發(fā)起連接;2)中心節(jié)點發(fā)出握手請求,計算節(jié)點返回基本信息,完成握手;3)中心節(jié)點將遠程服務的調用參數編碼成數據流,通過網絡將服務請求發(fā)送到計算節(jié)點;4)計算節(jié)點提取請求參數,調用本地服務,將計算結果編碼成數據流,發(fā)送回中心節(jié)點。其中,基于會話的請求需要計算節(jié)點維護中間狀態(tài)或鎖定計算資源,這種情況下,需要將上面的服務封裝成基于會話的資源管理器,在會話階段持續(xù)維護計算所需的資源(如文件)和計算的中間結果。由于C++語言沒有提供反射機制,即使開啟了RTTI(運行時類型信息),也只能為類提供部分運行時特性,無法為程序提供自描述能力。WCF由于部署較為麻煩,且效率不如C++高。RCF和WCF—樣,只提供了入站式的服務,并且不支持持續(xù)會話。而用傳統的設計方式實現上述的通信過程中,通信雙方耦合性很大,信息交互的時間長,降低了通信的可靠性。
      發(fā)明內容本發(fā)明提出了一種基于BOOST的出站式RFI/RMI服務實現方法及通信系統,能夠解決客戶端遠程調用所需要的函數契約問題,能夠提高客戶端與服務端間的通信靈活度,極大簡化客戶端的調用程序,增加通信的可靠性。為解決上述技術問題,本發(fā)明米用的一個技術方案是提供一種基于BOOST的出站式RFI/RMI服務實現方法,包括如下步驟S01、中心節(jié)點接收計算節(jié)點發(fā)出的請求連接信號,所述中心節(jié)點對請求連接信號處理后向計算節(jié)點發(fā)送握手請求;S02、中心節(jié)點接收計算節(jié)點的握手應答后,利用第一代理函數將中心節(jié)點的服務函數中遠程調用服務參數序列化后生成參數輸入流,并將包含有服務函數名和序列化遠程調用服務參數的參數輸入流發(fā)送至計算節(jié)點;S03、計算節(jié)點接收中心節(jié)點發(fā)送的參數輸入流,并根據參數輸入流中的函數名查詢服務函數的第二代理函數,并利用第二代理函數將序列化的遠程調用服務參數反序列化,調用服務函數,計算反序列化后遠程調用服務參數的結果并輸出遠程調用服務參數,利用第二代理函數對遠程調用服務參數的結果進行序列化后,生成包含結果序列與輸出參數的參數輸出流,其中,第一代理函數及第二代理函數均由代理函數模板生成,第一代理函數與第二代理函數相對應,代理函數模板由基于boost庫中的迭代宏遞歸定義;S04、計算節(jié)點將參數輸出流返回給中心節(jié)點并由中心節(jié)點對參數輸出流進行處理,通信結束。其中,步驟S03中還包括判斷遠程調用服務參數的類型,若接收的參數輸入流中的參數類型與計算節(jié)點中服務函數相應的參數相同,則根據該參數計算出對應的計算結果,并返回結果真;若接收的參數與服務函數中的參數不同,則停止計算結果,并返回結果假。其中,所述步驟S03中,所述代理函數的生成,包括如下步驟S21、生成代理函數的模板文件并定義迭代宏,該迭代宏包含全部的遠程服務調用參數個數;S22、代理函數模板文件根據迭代宏中的遠程服務調用參數生成指定參數個數的代理函數模板;S23、調用生成代理函數模板時,根據服務函數的自動匹配參數個數和參數類型,并生成相應的代理函數。為解決上述技術問題,本發(fā)明采用的另一個技術方案是提供一種基于BOOST的出站式RFI/RMI服務系統,包括中心節(jié)點與計算節(jié)點,所述中心節(jié)點包括第一通信單元、參數輸入流生成單元及輸出流解析處理單元,所述第一通信模塊用于接收計算節(jié)點發(fā)出的請求連接信號,處理請求連接信號后向計算節(jié)點發(fā)送握手請求,接收握手應答后向計算節(jié)點發(fā)送參數輸入流及接收計算節(jié)點發(fā)送的參數輸出流;所述參數輸入流生成單元,利用第一代理函數將中心節(jié)點的服務函數中遠程調用服務參數序列化后生成參數輸入流,該參數輸入流包含有服務函數名和序列化遠程調用服務參數;所述參數輸出流解析單元用于解析并處理參數輸出流;所述計算節(jié)點包括第二通信模塊、輸入流解析處理單元和參數輸出流生成單元,所述第二通信模塊用于向中心節(jié)點發(fā)送請求連接,接收中心節(jié)點的握手請求并發(fā)送握手應答,接收中心節(jié)點發(fā)送的參數輸入流及向中心節(jié)點發(fā)送參數輸出流;所述輸入流解析處理單元并根據參數輸入流中的函數名查詢服務函數的第二代理函數,并利用第二代理函數將序列化的遠程調用服務參數反序列化,調用服務函數,計算反序列化后遠程調用服務參數的結果并輸出遠程調用服務參數;所述參數輸出流生成單元,利用第二代理函數對遠程調用服務參數的結果進行序列化后,生成包含結果與輸出參數的參數輸出流。優(yōu)選的,所述計算節(jié)點還包括判斷單元,用于判斷遠程調用服務參數的類型,若接收的參數輸入流中的參數類型與計算節(jié)點中服務函數相應的參數相同,則根據該參數計算出對應的計算結果,并返回結果真;若接收的參數與服務函數中的參數不同,則停止計算結果,并返回結果假。優(yōu)選的,所述計算節(jié)點與中心節(jié)點均包括代理函數生成單元,用于生成代理函數,具體為生成代理函數的模板文件并定義迭代宏,該迭代宏包含全部的遠程服務調用參數;代理函數模板文件根據迭代宏中的遠程服務調用參數生成指定參數個數的代理函數模板;調用代理函數模板時,根據服務函數的自動匹配參數個數和參數類型,并生成相應的代理函數。本發(fā)明的有益技術效果是本發(fā)明提供了一種基于BOOST的出站式RFI/RMI服務實現方法及通信系統,在中心節(jié)點采用第一代理函數對遠程調用服務參數進行序列化,并將該參數個數與參數類型編碼成參數輸入流并將其向計算節(jié)點發(fā)送;計算節(jié)點接收該參數輸入流后,利用第二代理函數對參數輸入流進行反序列處理得出結果,將結果序列化后生成包括結果序列及輸出參數的參數輸出流并將參數輸出流向中心節(jié)點發(fā)送;中心節(jié)點接收并對參數輸出流進行處理,實現了計算節(jié)點與中心節(jié)點的出站服務。本發(fā)明通過能夠實現客戶端與服務端的自動連接、元語言級的函數代理和任一類型參數的序列化,打破了對客戶端與服務端參數類型和數量的限制,允許客戶端傳出參數,并且通信雙方不需要事先參照同一服務契約。即在RCF的基礎上,省去了對遠程對象聲明,能夠實現出站式的RFI/RMI服務。圖1是本發(fā)明基于BOOST的出站式RFI/RMI服務實現方法的信息交互流圖;圖2是本發(fā)明中生成代理函數的流程圖;圖3是本發(fā)明基于BOOST的出站式RFI/RMI通信系統框圖。標號說明10-中心節(jié)點,11-第一通信單元,12-參數輸入流生成單元,13-輸出流解析處理單元;20-計算節(jié)點,21-第二通信單元,22-輸入流解析處理單元,23-參數輸出流生成單元。具體實施例方式為詳細說明本發(fā)明的技術內容、構造特征、所實現目的及效果,以下結合實施方式并配合附圖詳予說明。本發(fā)明中RFI是指遠程函數調用,RMI是指遠程方法調用,RMI的實現是為了支持基于連接會話的持續(xù)會話服務。例如上傳文件,不適合于在一次調用中將整個文件完整上傳,也不適合在主連接傳輸文件(可能會阻塞其它服務請求),需要新建連接會話以釋放主連接的傳輸壓力并由服務對象管理中間狀態(tài)和服務期間所需的資源。兩種服務方式有一個共同點,都是由提供服務的一方發(fā)起連接,由調用服務的一方接受連接,RMI較RFI多了由中心節(jié)點向計算節(jié)點申請新會話、建立新連接、發(fā)送和返回帶會話ID握手應答的過程,而本方案的改進點在于利用代理函數對中心節(jié)點及計算節(jié)點中遠程調用參數的處理。請參閱圖1,本實施例提供了一種基于BOOST的出站式RFI/RMI服務實現方法,包括如下步驟S01、中心節(jié)點接收計算節(jié)點發(fā)出的請求連接信號,所述中心節(jié)點對請求連接信號處理后向計算節(jié)點發(fā)送握手請求。S02、中心節(jié)點接收計算節(jié)點的握手應答后,利用第一代理函數將中心節(jié)點的服務函數中遠程調用服務參數序列化后生成參數輸入流,并將包含有服務函數名和序列化遠程調用服務參數的參數輸入流發(fā)送至計算節(jié)點。S03、計算節(jié)點接收中心節(jié)點發(fā)送的參數輸入流,并根據參數輸入流中的函數名查詢服務函數的第二代理函數,并利用第二代理函數將序列化的遠程調用服務參數反序列化,調用服務函數,計算反序列化后遠程調用服務參數的結果并輸出遠程調用服務參數,利用第二代理函數對遠程調用服務參數的結果進行序列化后,生成包含結果序列與輸出參數的參數輸出流,其中,第一代理函數及第二代理函數均由代理函數模板生成,第一代理函數與第二代理函數相對應,代理函數模板由基于boost庫中的迭代宏遞歸定義。S04、計算節(jié)點將參數輸出流返回給中心節(jié)點并由中心節(jié)點對參數輸出流進行處理,通信結束。上述的方案中,步驟S03中還包括判斷遠程調用服務參數的類型,若接收的參數輸入流中的參數類型與計算節(jié)點中服務函數相應的參數相同,則根據該參數計算出對應的計算結果,并返回結果真;若接收的參數與服務函數中的參數不同,則停止計算結果,并返回結果假。在一個典型的RFI應用場景如下,計算節(jié)點定義一個服務函數boolAdd(Vectorvl,Vectorv2,Vector&r);如果參數正確,則把vl和v2的計算結果輸出到η并返回真;否則返回假。在計算節(jié)點初始化過程中,使用RegisterFunction將函數注冊為服務,該RegisterFunction(“Add”,Add);其中第一個參數指定服務的名稱,第二個參數是服務函數。在中心節(jié)點,通過如下方式調用Add服務boolsuccess=RemoteCalKbool(木)(Vector,Vector,Vector&)>(nodeld,“Add”,vl,v2,r);整個調用過程就完成了,本文所述方案自動完成參數和返回結果序列化、服務函數映射和調用。上述中RegisterFunction的定義如下staticmap<stringName,FunctionEntty>g—service—table;template<typenameF>voidRegisterFunction(stringname,Ffunction)g_service_table[name]=FiinctionEn^^GetFunctionAgenufLinction),function);}其中g—service—table是已注冊的服務函數表,里面的每個項都是函數入口,定義如下structFunctionEntryvoid(*agent)(iostream&input,iostream&output,void*function);void*function;這里agent是擁有固定形式的函數指針,GetFunctionAgent為每個服務函數匹配一個代理函數并賦給agent,此后agent是唯一知道函數原型的代理接口。當網絡監(jiān)聽線程讀取到中心節(jié)點的請求后,將參數流轉換成input,并根據請求的函數名從服務表檢索到函數入口,再借助代理函數和原函數指針function調用真正的服務。最后將返回結果序列化到輸出流,發(fā)送回中心節(jié)點。對于RMI的服務,方法相似權利要求1.一種基于BOOST的出站式RFI/RMI服務實現方法,其特征在于,包括如下步驟501、中心節(jié)點接收計算節(jié)點發(fā)出的請求連接信號,所述中心節(jié)點對請求連接信號處理后向計算節(jié)點發(fā)送握手請求;502、中心節(jié)點接收計算節(jié)點的握手應答后,利用第一代理函數將中心節(jié)點的服務函數中遠程調用服務參數序列化后生成參數輸入流,并將包含有服務函數名和序列化遠程調用服務參數的參數輸入流發(fā)送至計算節(jié)點;503、計算節(jié)點接收中心節(jié)點發(fā)送的參數輸入流,并根據參數輸入流中的函數名查詢服務函數的第二代理函數,并利用第二代理函數將序列化的遠程調用服務參數反序列化,調用服務函數,計算反序列化后遠程調用服務參數的結果并輸出遠程調用服務參數,利用第二代理函數對遠程調用服務參數的結果進行序列化后,生成包含結果序列與輸出參數的參數輸出流,其中,第一代理函數及第二代理函數均由代理函數模板生成,第一代理函數與第二代理函數相對應,代理函數模板由基于boost庫中的迭代宏遞歸定義;504、計算節(jié)點將參數輸出流返回給中心節(jié)點并由中心節(jié)點對參數輸出流進行處理,通信結束。2.根據權利要求1所述的基于BOOST的出站式RFI/RMI服務實現方法,其特征在于,步驟S03中還包括判斷遠程調用服務參數的類型,若接收的參數輸入流中的參數類型與計算節(jié)點中服務函數相應的參數相同,則根據該參數計算出對應的計算結果,并返回結果真;若接收的參數與服務函數中的參數不同,則停止計算結果,并返回結果假。3.根據權利要求1所述的基于BOOST的出站式RFI/RMI服務實現方法,其特征在于,所述步驟S03中,所述代理函數的生成,包括如下步驟521、生成代理函數的模板文件并定義迭代宏,該迭代宏包含全部的遠程服務調用參數個數;522、代理函數模板文件根據迭代宏中的遠程服務調用參數生成指定參數個數的代理函數模板;523、調用生成代理函數模板時,根據服務函數的自動匹配參數個數和參數類型,并生成相應的代理函數。4.一種基于BOOST的出站式RFI/RMI通信系統,其特征在于,包括中心節(jié)點與計算節(jié)點,所述中心節(jié)點包括第一通信單元、參數輸入流生成單元及輸出流解析處理單元,所述第一通信模塊用于接收計算節(jié)點發(fā)出的請求連接信號,處理請求連接信號后向計算節(jié)點發(fā)送握手請求,接收握手應答后向計算節(jié)點發(fā)送參數輸入流及接收計算節(jié)點發(fā)送的參數輸出流;所述參數輸入流生成單元,利用第一代理函數將中心節(jié)點的服務函數中遠程調用服務參數序列化后生成參數輸入流,該參數輸入流包含有服務函數名和序列化遠程調用服務參數;所述參數輸出流解析單元用于解析并處理參數輸出流;所述計算節(jié)點包括第二通信模塊、輸入流解析處理單元和參數輸出流生成單元,所述第二通信模塊用于向中心節(jié)點發(fā)送請求連接,接收中心節(jié)點的握手請求并發(fā)送握手應答,接收中心節(jié)點發(fā)送的參數輸入流及向中心節(jié)點發(fā)送參數輸出流;所述輸入流解析處理單元并根據參數輸入流中的函數名查詢服務函數的第二代理函數,并利用第二代理函數將序列化的遠程調用服務參數反序列化,調用服務函數,計算反序列化后遠程調用服務參數的結果并輸出遠程調用服務參數;所述參數輸出流生成單元,利用第二代理函數對遠程調用服務參數的結果進行序列化后,生成包含結果與輸出參數的參數輸出流。5.根據權利要求4所述的一種基于BOOST的出站式RFI/RMI通信系統,其特征在于,所述計算節(jié)點還包括判斷單元,用于判斷遠程調用服務參數的類型,若接收的參數輸入流中的參數類型與計算節(jié)點中服務函數相應的參數相同,則根據該參數計算出對應的計算結果,并返回結果真;若接收的參數與服務函數中的參數不同,則停止計算結果,并返回結果假。6.根據權利要求4所述的一種基于BOOST的出站式RFI/RMI通信系統,其特征在于,所述計算節(jié)點與中心節(jié)點均包括代理函數生成單元,用于生成代理函數,具體為生成代理函數的模板文件并定義迭代宏,該迭代宏包含全部的遠程服務調用參數;代理函數模板文件根據迭代宏中的遠程服務調用參數生成指定參數個數的代理函數模板;調用代理函數模板時,根據服務函數的自動匹配參數個數和參數類型,并生成相應的代理函數。全文摘要本發(fā)明公開了一種基于BOOST的出站式RFI/RMI服務實現方法及通信系統,其中,所述基于BOOST的出站式RFI/RMI服務實現方法,包括S01、中心節(jié)點接收計算節(jié)點發(fā)出的請求連接信號,所述中心節(jié)點對請求連接信號處理后向計算節(jié)點發(fā)送握手請求;S02、中心節(jié)點接收計算節(jié)點的握手應答后,生成參數輸入流,并將其發(fā)送至計算節(jié)點;S03、計算節(jié)點接收參數輸入流,處理參數輸入流,生成包含結果序列與輸出參數的參數輸出流;S04、計算節(jié)點將參數輸出流返回給中心節(jié)點并由中心節(jié)點對參數輸出流進行處理,通信結束。本發(fā)明能夠提高客戶端與服務端間的通信靈活度,極大簡化客戶端的調用程序,增加通信的可靠性。文檔編號G06F9/46GK103019820SQ20121052164公開日2013年4月3日申請日期2012年12月6日優(yōu)先權日2012年12月6日發(fā)明者侯紹東申請人:廈門市美亞柏科信息股份有限公司
      網友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1