新四季網

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

2023-06-13 22:50:01 1


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

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀