專利名稱:一種遠程數(shù)據(jù)傳輸中的數(shù)據(jù)同步方法
一種遠程數(shù)據(jù)傳輸中的數(shù)據(jù)同步方法技術(shù)領(lǐng)域
本發(fā)明屬于數(shù)據(jù)傳輸技術(shù)領(lǐng)域,具體涉及一種基于分布式面向?qū)ο蠹夹g(shù)的遠程數(shù)據(jù)傳輸中的數(shù)據(jù)同步方法,解決的主要問題是位于不同進程中的對象之間的調(diào)用問題。
背景技術(shù):
90年代出現(xiàn)的分布式對象技術(shù)為網(wǎng)絡(luò)計算平臺上軟件的開發(fā)提供了強有力的解決方案。目前,分布式對象技術(shù)已經(jīng)成為建立服務(wù)應(yīng)用框架和軟件構(gòu)件的核心技術(shù),在開發(fā)大型分布式應(yīng)用系統(tǒng)中表現(xiàn)出強大的生命力。
分布對象技術(shù)在比較大型的網(wǎng)絡(luò)系統(tǒng)中應(yīng)用較多,比如像醫(yī)學(xué)方面的醫(yī)學(xué)信息系統(tǒng)、銀行業(yè)、交通、電信,幾乎各行各業(yè)都有成功的例子。
目前國際上,分布式對象技術(shù)有三大流派——COBRA、C0M/DC0M和Java。CORBA技術(shù)是最早出現(xiàn)的,1991年OMG頒布了 COBRA 1. 0標(biāo)準(zhǔn),在當(dāng)時來說做得非常好;再有就是 Microsoft的COM系列,從最初的COM發(fā)展成現(xiàn)在的DC0M,形成了 Microsoft —套分布式對象的計算平臺;而Sim公司的Java平臺,在其最早推出的時候,只提供了遠程的方法調(diào)用, 在當(dāng)時并不能被稱為分布式對象計算,只是屬于網(wǎng)絡(luò)計算里的一種,接著推出的JavaBean, 也還不足以和上述兩大流派抗衡,而其目前的版本叫J2EE,推出了 EJB,除了語言外還有組件的標(biāo)準(zhǔn)以及組件之間協(xié)同工作通訊的框架。于是,也就形成了目前的三大流派。
COBRA標(biāo)準(zhǔn)主要分為三個層次對象請求代理、公共對象服務(wù)和公共設(shè)施。最底層是對象請求代理0RB,規(guī)定了分布對象的定義(接口)和語言映射,實現(xiàn)對象間的通訊和互操作,是分布對象系統(tǒng)中的“軟總線”;在ORB之上定義了很多公共服務(wù),可以提供諸如并發(fā)服務(wù)、名字服務(wù)、事務(wù)(交易)服務(wù)、安全服務(wù)等各種各樣的服務(wù);最上層的公共設(shè)施則定義了組件框架,提供可直接為業(yè)務(wù)對象使用的服務(wù),規(guī)定業(yè)務(wù)對象有效協(xié)作所需的協(xié)定規(guī)則。 總之,CORBA的特點是大而全,互操作性和開放性非常好。目前CORBA的最新版本是2. 3。 CORBA 3.0也已基本完成,增加了有關(guān)hternet集成和QoS控制等內(nèi)容。CORBA的缺點是龐大而復(fù)雜,并且技術(shù)和標(biāo)準(zhǔn)的更新相對較慢,COBRA規(guī)范從1. 0升級到2. 0所花的時間非常短,而再往上的版本的發(fā)布就相對十分緩慢了。
Java是Sim公司自己定的,演變的很快。Java的優(yōu)勢是純語言的,跨平臺性非常好。Java分布對象技術(shù)通常指遠程方法調(diào)用(RMI)和企業(yè)級JavaBean (EJB)。RMI提供了一個Java對象遠程調(diào)用另一 Java對象的方法的能力,與傳統(tǒng)RPC類似,只能支持初級的分布對象互操作。Sim公司于是基于RMI,提出了 EJB?;贘ava服務(wù)器端組件模型,EJB框架提供了像遠程訪問、安全、交易、持久和生命期管理等多種支持分布對象計算的服務(wù)。目前,Java技術(shù)和CORBA技術(shù)有融合的趨勢。
COM技術(shù)是Microsoft獨家做的,是在Windows 3. 1中最初為支持復(fù)合文檔而使用 OLE技術(shù)上發(fā)展而來,經(jīng)歷了 OLE 2/C0M、ActiveX、DCOM和COM+等幾個階段,目前COM+把消息通訊模塊MSMQ和解決關(guān)鍵業(yè)務(wù)的交易模塊MTS都加進去了,是分布對象計算的一個比較完整的平臺。Microsoft的COM平臺效率比較高,同時它有一系列相應(yīng)的開發(fā)工具支持,應(yīng)用開發(fā)相對簡單。但它有一個致命的弱點就是COM的跨平臺性較差,如何實現(xiàn)與第三方廠商的互操作性始終是它的一大問題。從分布對象技術(shù)發(fā)展的角度來看,大多數(shù)人認(rèn)為COM 競爭不過COBRA。以上三種分布對象技術(shù)架構(gòu)應(yīng)用起來比較復(fù)雜,因為這種軟件通常都比較龐大, 涉及到網(wǎng)絡(luò)、對象技術(shù)等多種技術(shù),尤其是C0BRA,系統(tǒng)開發(fā)比較困難。在實際研發(fā)過程中如需要進行二次開發(fā)和定制,不能提供良好的支持。此外,如應(yīng)用于網(wǎng)絡(luò)視頻會議、在線課堂領(lǐng)域,還需考慮到數(shù)據(jù)交換是基于某個會議室/課堂進行的分組交換,以上三種機制不能提供支持。
發(fā)明內(nèi)容
本發(fā)明的目的就是針對現(xiàn)有技術(shù)的不足,提供一種基于分布式面向?qū)ο蠹夹g(shù)的遠程數(shù)據(jù)傳輸中的數(shù)據(jù)同步方法。本發(fā)明方法包括調(diào)用網(wǎng)絡(luò)對象機制、實現(xiàn)網(wǎng)絡(luò)對象回調(diào)、設(shè)定網(wǎng)絡(luò)對象接口、網(wǎng)絡(luò)對象的調(diào)用響應(yīng)、構(gòu)建網(wǎng)絡(luò)對象函數(shù)、構(gòu)建函數(shù)映射表和對象默認(rèn)機制、編制網(wǎng)絡(luò)對象;
I.調(diào)用網(wǎng)絡(luò)對象機制的具體方法是
應(yīng)用程序向進程內(nèi)網(wǎng)絡(luò)對象容器發(fā)起網(wǎng)絡(luò)對象服務(wù)請求,網(wǎng)絡(luò)對象容器將網(wǎng)絡(luò)對象服務(wù)請求的信息打包;網(wǎng)絡(luò)對象容器通過應(yīng)用程序向服務(wù)器發(fā)送打包后網(wǎng)絡(luò)對象服務(wù)請求的信息;服務(wù)器通過信息交換分組向組內(nèi)成員發(fā)送打包后網(wǎng)絡(luò)對象服務(wù)請求的信息,實現(xiàn)組內(nèi)成員信息同步;服務(wù)器對打包后網(wǎng)絡(luò)對象服務(wù)請求的信息進行解包,服務(wù)器利用解包后的網(wǎng)絡(luò)對象服務(wù)請求的信息發(fā)起與之對應(yīng)的網(wǎng)絡(luò)對象的調(diào)用;除調(diào)用發(fā)起客戶端外的其他所有的遠程客戶端收到來自服務(wù)器的打包后網(wǎng)絡(luò)對象服務(wù)請求的信息后,通過網(wǎng)絡(luò)對象容器解包,然后利用解包后的網(wǎng)絡(luò)對象服務(wù)請求的信息發(fā)起與之對應(yīng)的網(wǎng)絡(luò)對象的調(diào)用;
所述的網(wǎng)絡(luò)對象服務(wù)請求包括發(fā)布網(wǎng)絡(luò)對象、獲得網(wǎng)絡(luò)對象、刪除網(wǎng)絡(luò)對象、調(diào)用網(wǎng)絡(luò)函數(shù)、修改網(wǎng)絡(luò)對象屬性;
打包和解包采用常用的內(nèi)存序列化的方法。II .實現(xiàn)網(wǎng)絡(luò)對象回調(diào)的具體方法是
網(wǎng)絡(luò)對象機制提供三個層次的回調(diào),分別是基于網(wǎng)絡(luò)對象容器模塊層的回調(diào)、基于具體對象的通用回調(diào)、基于用戶自定義對象的特殊回調(diào);
對于基于網(wǎng)絡(luò)對象容器模塊層的回調(diào),所有網(wǎng)絡(luò)對象被處理的時候,都進行無條件回
調(diào);
對于基于具體對象的通用回調(diào),通過對象內(nèi)置的回調(diào)函數(shù)指針回調(diào),所述的回調(diào)函數(shù)指針指向應(yīng)用程序的代碼段;
對于基于用戶自定義對象的特殊回調(diào),通過用戶自定義的回調(diào)函數(shù)指針回調(diào),所述的回調(diào)函數(shù)指針指向應(yīng)用程序的代碼段。III.設(shè)定網(wǎng)絡(luò)對象接口,具體是
網(wǎng)絡(luò)對象機制提供網(wǎng)絡(luò)對象基礎(chǔ)類,用戶在使用網(wǎng)絡(luò)對象機制時從網(wǎng)絡(luò)對象基礎(chǔ)類繼承構(gòu)造出網(wǎng)絡(luò)對象;所述的網(wǎng)絡(luò)對象基礎(chǔ)類提供如下內(nèi)容
①提供變量區(qū)域,包括對象的創(chuàng)建者、讀取者、分組交換號碼;
②提供基本函數(shù),包括獲取對象編號、獲取類名、設(shè)置與應(yīng)用程序的回調(diào)接口;③提供網(wǎng)絡(luò)對象數(shù)據(jù)打包和解包函數(shù),即寫對象和讀對象;④提供網(wǎng)絡(luò)對象調(diào)用響應(yīng)函數(shù)、獲得和設(shè)置網(wǎng)絡(luò)對象屬性函數(shù);所述的網(wǎng)絡(luò)對象屬性函數(shù)包括獲取參數(shù)值函數(shù)、解析對象屬性函數(shù)、獲取參數(shù)類型函數(shù);所述的獲取參數(shù)值函數(shù)用于獲得參數(shù)值,如參數(shù)值為簡單類型,則返回簡單類型的數(shù)據(jù)指針,如是簡單類型之外的類型,則認(rèn)為參數(shù)值為對象,實例化對象,并返回對象的數(shù)據(jù)指針;所述的簡單類型包括字節(jié)類型、短整型、整型、長整型、字符串類型;所述的解析對象屬性函數(shù)用于解析參數(shù),是一個網(wǎng)絡(luò)對象函數(shù)參數(shù)的序列化信息; 所述的獲取參數(shù)類型函數(shù)用于獲得參數(shù)類型,如參數(shù)類型為簡單類型,直接返回該簡單類型的類型名稱,如是簡單類型之外的類型,則認(rèn)為參數(shù)值為對象,返回對象的類型名稱。
所述的網(wǎng)絡(luò)對象調(diào)用響應(yīng)函數(shù)用于當(dāng)網(wǎng)絡(luò)對象收到來自遠程應(yīng)用程序的服務(wù)請求后,根據(jù)請求中的函數(shù)名查找函數(shù)映射表,找到對應(yīng)的網(wǎng)絡(luò)對象函數(shù),完成調(diào)用,即數(shù)據(jù)同步。
IV.網(wǎng)絡(luò)對象的調(diào)用響應(yīng)包括支持本地應(yīng)用程序調(diào)用的響應(yīng)和支持遠程應(yīng)用程序調(diào)用的響應(yīng);網(wǎng)絡(luò)對象提供業(yè)務(wù)函數(shù),當(dāng)本地應(yīng)用程序代碼發(fā)起對網(wǎng)絡(luò)對象的函數(shù)調(diào)用時,網(wǎng)絡(luò)對象使用業(yè)務(wù)函數(shù)來完成對本地應(yīng)用程序調(diào)用的響應(yīng);本地應(yīng)用程序使用面向?qū)ο笳Z言的調(diào)用方式來調(diào)用網(wǎng)絡(luò)對象的每個業(yè)務(wù)函數(shù)。
網(wǎng)絡(luò)對象提供服務(wù)響應(yīng)函數(shù),當(dāng)客戶端發(fā)起對網(wǎng)絡(luò)對象函數(shù)調(diào)用后,其他分布于各客戶端和服務(wù)器上的同名網(wǎng)絡(luò)對象實例進行同步操作,執(zhí)行同名函數(shù),實現(xiàn)同步操作,完成遠程應(yīng)用程序調(diào)用的響應(yīng)。
網(wǎng)絡(luò)對象業(yè)務(wù)函數(shù)兼?zhèn)溥h程調(diào)用響應(yīng)和發(fā)起遠程調(diào)用兩個作用,每個網(wǎng)絡(luò)對象的代碼在調(diào)用發(fā)起客戶端、服務(wù)器、調(diào)用響應(yīng)客戶端之間是公用的;業(yè)務(wù)函數(shù)內(nèi)部做判斷,最后是否要把調(diào)用向遠程發(fā)起;當(dāng)作為調(diào)用發(fā)起者時,通過參數(shù)告知函數(shù)內(nèi)部,這個是作為發(fā)起者,函數(shù)最后要發(fā)起遠程調(diào)用,而作為服務(wù)響應(yīng)者時,最后這段代碼應(yīng)該不執(zhí)行。否則,會出現(xiàn)循環(huán)調(diào)用的情況。
V.構(gòu)建網(wǎng)絡(luò)對象函數(shù)網(wǎng)絡(luò)對象函數(shù)包括服務(wù)響應(yīng)函數(shù)和業(yè)務(wù)函數(shù),在構(gòu)造網(wǎng)絡(luò)對象模型時,需要申明服務(wù)響應(yīng)函數(shù)和業(yè)務(wù)函數(shù)兩個函數(shù)。
所述的服務(wù)響應(yīng)函數(shù)是將業(yè)務(wù)函數(shù)加固定前綴名而成,業(yè)務(wù)函數(shù)的定義和面向?qū)ο缶幊陶Z言的定義相同;服務(wù)響應(yīng)函數(shù)內(nèi)部先對來自打包后的遠程應(yīng)用程序的網(wǎng)絡(luò)對象請求解包,然后調(diào)用業(yè)務(wù)函數(shù)。
網(wǎng)絡(luò)對象函數(shù),通過函數(shù)聲明宏、函數(shù)定義開始宏、函數(shù)定義結(jié)束宏完成網(wǎng)絡(luò)對象函數(shù)的框架搭建;利用三個宏搭建網(wǎng)絡(luò)對象函數(shù)采用C++語言宏編程技術(shù),屬于公知技術(shù)。
VI .構(gòu)建函數(shù)映射表和對象默認(rèn)機制網(wǎng)絡(luò)對象提供函數(shù)映射表,用于記錄網(wǎng)絡(luò)對象函數(shù)名稱與網(wǎng)絡(luò)對象函數(shù)之間的映射關(guān)系;在網(wǎng)絡(luò)對象機制中,使用函數(shù)映射定義開始宏、函數(shù)映射項定義宏、函數(shù)映射定義結(jié)束宏來填寫映射表內(nèi)容。
當(dāng)網(wǎng)絡(luò)對象收到來自遠程應(yīng)用程序的服務(wù)請求后,根據(jù)請求中的函數(shù)名查找函數(shù)映射表,找到對應(yīng)的網(wǎng)絡(luò)對象函數(shù),完成調(diào)用即數(shù)據(jù)同步。
網(wǎng)絡(luò)對象機制提供網(wǎng)絡(luò)對象默認(rèn)構(gòu)造開始宏和結(jié)束宏來構(gòu)造網(wǎng)絡(luò)對象的默認(rèn)機制行為。
所述的默認(rèn)機制行為包括對象調(diào)用響應(yīng)函數(shù)獲得網(wǎng)絡(luò)對象類型名稱和定義函數(shù)映射表。
W .編制網(wǎng)絡(luò)對象的具體步驟是①從網(wǎng)絡(luò)對象基礎(chǔ)類繼承得到新增網(wǎng)絡(luò)對象;②定義用戶需要的業(yè)務(wù)數(shù)據(jù)成員變量、面向業(yè)務(wù)的回調(diào)接口;③在類定義中使用網(wǎng)絡(luò)對象默認(rèn)構(gòu)造開始宏和結(jié)束宏來構(gòu)造網(wǎng)絡(luò)對象的默認(rèn)行為;④使用函數(shù)聲明宏、函數(shù)定義開始宏和結(jié)束宏完成網(wǎng)絡(luò)對象函數(shù)的構(gòu)造;⑤在函數(shù)定義開始宏和結(jié)束宏之間填寫用戶的業(yè)務(wù)代碼;⑥使用函數(shù)映射定義開始宏、函數(shù)映射項定義宏、函數(shù)映射定義結(jié)束宏來完成網(wǎng)絡(luò)對象函數(shù)名稱和函數(shù)代碼指針的映射。
本發(fā)明方法實現(xiàn)了對象在客戶端和服務(wù)器之間的傳遞、調(diào)用和同步更改信息。可以讓一個對象同時存在于各客戶端和服務(wù)器上。當(dāng)一個客戶端觸發(fā)調(diào)用后,可由服務(wù)器轉(zhuǎn)發(fā)到其他客戶端同步執(zhí)行對象操作??蛻舳颂峁┳罨镜木W(wǎng)絡(luò)對象基礎(chǔ)類(NetObject)和實現(xiàn)網(wǎng)絡(luò)對象存取、傳發(fā)的服務(wù)對象接口(INetObjectkrvice)。服務(wù)器端實現(xiàn)對象信息的緩存、同步信息的群發(fā)。
本發(fā)明的非常簡單易用、輕量級技術(shù)架構(gòu),同時考慮到如實現(xiàn)一個在線課堂內(nèi)分組交換數(shù)據(jù)的特點?;诒景l(fā)明的技術(shù)架構(gòu),可快速構(gòu)建網(wǎng)絡(luò)在線課堂的文檔、白板、背景圖片、用戶權(quán)限、同步事件、投票、音視頻控制等信息共享處理。程序員可以不必關(guān)心網(wǎng)絡(luò)間數(shù)據(jù)的傳遞細(xì)節(jié)。
具體實施方式
—種遠程數(shù)據(jù)傳輸中的數(shù)據(jù)同步方法,該方法包括七個部分,分別是調(diào)用網(wǎng)絡(luò)對象機制、實現(xiàn)網(wǎng)絡(luò)對象回調(diào)、設(shè)定網(wǎng)絡(luò)對象接口、網(wǎng)絡(luò)對象的調(diào)用響應(yīng)、構(gòu)建網(wǎng)絡(luò)對象函數(shù)、 構(gòu)建函數(shù)映射表和對象默認(rèn)機制、編制網(wǎng)絡(luò)對象;每部分的具體內(nèi)容如下I.調(diào)用網(wǎng)絡(luò)對象機制的具體方法是應(yīng)用程序(APP)向進程內(nèi)網(wǎng)絡(luò)對象容器(NetObjClient)發(fā)起網(wǎng)絡(luò)對象服務(wù)請求,網(wǎng)絡(luò)對象容器將網(wǎng)絡(luò)對象服務(wù)請求的信息打包;網(wǎng)絡(luò)對象容器通過應(yīng)用程序向服務(wù)器發(fā)送打包后網(wǎng)絡(luò)對象服務(wù)請求的信息;服務(wù)器通過信息交換分組向組內(nèi)成員發(fā)送打包后網(wǎng)絡(luò)對象服務(wù)請求的信息,實現(xiàn)組內(nèi)成員信息同步;服務(wù)器對打包后網(wǎng)絡(luò)對象服務(wù)請求的信息進行解包,服務(wù)器利用解包后的網(wǎng)絡(luò)對象服務(wù)請求的信息發(fā)起與之對應(yīng)的網(wǎng)絡(luò)對象的調(diào)用;除調(diào)用發(fā)起客戶端外的其他所有的遠程客戶端收到來自服務(wù)器的打包后網(wǎng)絡(luò)對象服務(wù)請求的信息后,通過網(wǎng)絡(luò)對象容器解包,然后利用解包后的網(wǎng)絡(luò)對象服務(wù)請求的信息發(fā)起與之對應(yīng)的網(wǎng)絡(luò)對象的調(diào)用;所述的網(wǎng)絡(luò)對象服務(wù)請求包括發(fā)布網(wǎng)絡(luò)對象、獲得網(wǎng)絡(luò)對象、刪除網(wǎng)絡(luò)對象、調(diào)用網(wǎng)絡(luò)函數(shù)、修改網(wǎng)絡(luò)對象屬性;打包和解包采用常用的內(nèi)存序列化的方法。
II .實現(xiàn)網(wǎng)絡(luò)對象回調(diào)的具體方法是網(wǎng)絡(luò)對象機制提供三個層次的回調(diào),分別是基于網(wǎng)絡(luò)對象容器(NetObjClient)模塊層的回調(diào)、基于具體對象的通用回調(diào)、基于用戶自定義對象的特殊回調(diào);對于基于網(wǎng)絡(luò)對象容器模塊層的回調(diào),所有網(wǎng)絡(luò)對象被處理的時候,都進行無條件回調(diào);對于基于具體對象的通用回調(diào),通過對象內(nèi)置的回調(diào)函數(shù)指針回調(diào),所述的回調(diào)函數(shù)指針指向應(yīng)用程序的代碼段;對于基于用戶自定義對象的特殊回調(diào),通過用戶自定義的回調(diào)函數(shù)指針回調(diào),所述的回調(diào)函數(shù)指針指向應(yīng)用程序的代碼段。
III .設(shè)定網(wǎng)絡(luò)對象接口,具體是網(wǎng)絡(luò)對象機制提供網(wǎng)絡(luò)對象基礎(chǔ)類(NetOb ject),用戶在使用網(wǎng)絡(luò)對象機制時從網(wǎng)絡(luò)對象基礎(chǔ)類繼承構(gòu)造出網(wǎng)絡(luò)對象;所述的網(wǎng)絡(luò)對象基礎(chǔ)類提供如下內(nèi)容①提供變量區(qū)域,包括對象的創(chuàng)建者、讀取者、分組交換號碼;②提供基本函數(shù),包括獲取對象編號、獲取類名(GetNetClassName)、設(shè)置與應(yīng)用程序的回調(diào)接口(SetNetObjCallBack);③提供網(wǎng)絡(luò)對象數(shù)據(jù)打包和解包函數(shù),即寫對象(WriteObject)和讀對象 (ReadObject);④提供網(wǎng)絡(luò)對象調(diào)用響應(yīng)函數(shù)(CallProcedure)、獲得和設(shè)置網(wǎng)絡(luò)對象屬性函數(shù); 所述的網(wǎng)絡(luò)對象屬性函數(shù)包括獲取參數(shù)值函數(shù)、解析對象屬性函數(shù)、獲取參數(shù)類型函數(shù);所述的獲取參數(shù)值函數(shù)(GetParamValue)用于獲得參數(shù)值,如參數(shù)值為簡單類型,則返回簡單類型的數(shù)據(jù)指針,如是簡單類型之外的類型,則認(rèn)為參數(shù)值為對象,實例化對象,并返回對象的數(shù)據(jù)指針;所述的簡單類型包括字節(jié)類型、短整型、整型、長整型、字符串類型;所述的解析對象屬性函數(shù)(ParseftOperty)用于解析參數(shù),是一個網(wǎng)絡(luò)對象函數(shù)參數(shù)的序列化信息;所述的獲取參數(shù)類型函數(shù)(GetParamType)用于獲得參數(shù)類型,如參數(shù)類型為簡單類型,直接返回該簡單類型的類型名稱,如是簡單類型之外的類型,則認(rèn)為參數(shù)值為對象,返回對象的類型名稱。
所述的網(wǎng)絡(luò)對象調(diào)用響應(yīng)函數(shù)(CallProcedure)用于當(dāng)網(wǎng)絡(luò)對象收到來自遠程應(yīng)用程序的服務(wù)請求后,根據(jù)請求中的函數(shù)名查找函數(shù)映射表,找到對應(yīng)的網(wǎng)絡(luò)對象函數(shù), 完成調(diào)用,即數(shù)據(jù)同步。
IV .網(wǎng)絡(luò)對象的調(diào)用響應(yīng)包括支持本地應(yīng)用程序調(diào)用的響應(yīng)和支持遠程應(yīng)用程序調(diào)用的響應(yīng);網(wǎng)絡(luò)對象提供業(yè)務(wù)函數(shù),當(dāng)本地應(yīng)用程序代碼發(fā)起對網(wǎng)絡(luò)對象的函數(shù)調(diào)用時,網(wǎng)絡(luò)對象使用業(yè)務(wù)函數(shù)來完成對本地應(yīng)用程序調(diào)用的響應(yīng);本地應(yīng)用程序使用面向?qū)ο笳Z言的調(diào)用方式來調(diào)用網(wǎng)絡(luò)對象的每個業(yè)務(wù)函數(shù)。
網(wǎng)絡(luò)對象提供服務(wù)響應(yīng)函數(shù),當(dāng)客戶端發(fā)起對網(wǎng)絡(luò)對象函數(shù)調(diào)用后,其他分布于各客戶端和服務(wù)器上的同名網(wǎng)絡(luò)對象實例進行同步操作,執(zhí)行同名函數(shù),實現(xiàn)同步操作,完成遠程應(yīng)用程序調(diào)用的響應(yīng)。
網(wǎng)絡(luò)對象業(yè)務(wù)函數(shù)兼?zhèn)溥h程調(diào)用響應(yīng)和發(fā)起遠程調(diào)用兩個作用,每個網(wǎng)絡(luò)對象的代碼在調(diào)用發(fā)起客戶端、服務(wù)器、調(diào)用響應(yīng)客戶端之間是公用的;業(yè)務(wù)函數(shù)內(nèi)部做判斷,最后是否要把調(diào)用向遠程發(fā)起;當(dāng)作為調(diào)用發(fā)起者時,通過參數(shù)告知函數(shù)內(nèi)部,這個是作為發(fā)起者,函數(shù)最后要發(fā)起遠程調(diào)用,而作為服務(wù)響應(yīng)者時,最后這段代碼應(yīng)該不執(zhí)行。否則,會出現(xiàn)循環(huán)調(diào)用的情況。
V .構(gòu)建網(wǎng)絡(luò)對象函數(shù)網(wǎng)絡(luò)對象函數(shù)包括服務(wù)響應(yīng)函數(shù)和業(yè)務(wù)函數(shù),在構(gòu)造網(wǎng)絡(luò)對象模型時,需要申明服務(wù)響應(yīng)函數(shù)和業(yè)務(wù)函數(shù)兩個函數(shù)。
所述的服務(wù)響應(yīng)函數(shù)是將業(yè)務(wù)函數(shù)加固定前綴名而成,業(yè)務(wù)函數(shù)的定義和面向?qū)ο缶幊陶Z言的定義相同;服務(wù)響應(yīng)函數(shù)內(nèi)部先對來自打包后的遠程應(yīng)用程序的網(wǎng)絡(luò)對象請求解包,然后調(diào)用業(yè)務(wù)函數(shù)。
網(wǎng)絡(luò)對象函數(shù),通過函數(shù)聲明宏(DECLARE_FUNCTIONX)、函數(shù)定義開始宏(START_ IMPLEMENT_FUNCTIONX)、函數(shù)定義結(jié)束宏(END_IMPLEMENT_FUNCTIONX)完成網(wǎng)絡(luò)對象函數(shù)的框架搭建。
VI .構(gòu)建函數(shù)映射表和對象默認(rèn)機制網(wǎng)絡(luò)對象提供函數(shù)映射表(_FimCti0nS[]數(shù)組),用于記錄網(wǎng)絡(luò)對象函數(shù)名稱與網(wǎng)絡(luò)對象函數(shù)之間的映射關(guān)系;在網(wǎng)絡(luò)對象機制中,使用函數(shù)映射定義開始宏(BEGIN_ FUNCTI0N_MAP)、函數(shù)映射項定義宏(0N_FUNCTI0NX)、函數(shù)映射定義結(jié)束宏(END_ FUNCTI0N_MAP)來填寫映射表內(nèi)容。
當(dāng)網(wǎng)絡(luò)對象收到來自遠程應(yīng)用程序的服務(wù)請求后,根據(jù)請求中的函數(shù)名查找函數(shù)映射表,找到對應(yīng)的網(wǎng)絡(luò)對象函數(shù),完成調(diào)用即數(shù)據(jù)同步。
網(wǎng)絡(luò)對象機制提供網(wǎng)絡(luò)對象默認(rèn)構(gòu)造開始宏(DECLARE_NETW0RK_0BJ)和結(jié)束宏 (IMPLEMENT_NETW0RK_0BJ)來構(gòu)造網(wǎng)絡(luò)對象的默認(rèn)機制行為。
所述的默認(rèn)機制行為包括對象調(diào)用響應(yīng)函數(shù)(CallProcedure)、獲得網(wǎng)絡(luò)對象類型名稱(GetNetClassName)和定義函數(shù)映射表。
νπ .編制網(wǎng)絡(luò)對象的具體步驟是①從網(wǎng)絡(luò)對象基礎(chǔ)類(NetObject)繼承得到新增網(wǎng)絡(luò)對象;②定義用戶需要的業(yè)務(wù)數(shù)據(jù)成員變量、面向業(yè)務(wù)的回調(diào)接口;③在類定義中使用網(wǎng)絡(luò)對象默認(rèn)構(gòu)造開始宏(DECLARE_NETW0RK_0BJ)和結(jié)束宏 (IMPLEMENT_NETW0RK_0BJ)來構(gòu)造網(wǎng)絡(luò)對象的默認(rèn)行為;④使用函數(shù)聲明宏(DECLARE_FUNCTIONX)、函數(shù)定義開始宏(START_IMPLEMENT_ FUNCT10ΝΧ)和結(jié)束宏(END_IMPLEMENT_FUNCTIONX)完成網(wǎng)絡(luò)對象函數(shù)的構(gòu)造;⑤在函數(shù)定義開始宏(START_IMPLEMENT_FUNCTIONX )和結(jié)束宏(END_IMPLEMENT_ FUNCTI0NX)之間填寫用戶的業(yè)務(wù)代碼;⑥使用函數(shù)映射定義開始宏(BEGIN_FUNCTION_MAP)、函數(shù)映射項定義宏(0N_ FUNCTIONX )、函數(shù)映射定義結(jié)束宏(END_FUNCT10N_MAP )來完成網(wǎng)絡(luò)對象函數(shù)名稱和函數(shù)代碼指針的映射。
權(quán)利要求
1. 一種遠程數(shù)據(jù)傳輸中的數(shù)據(jù)同步方法,包括調(diào)用網(wǎng)絡(luò)對象機制、實現(xiàn)網(wǎng)絡(luò)對象回調(diào)、 設(shè)定網(wǎng)絡(luò)對象接口、網(wǎng)絡(luò)對象的調(diào)用響應(yīng)、構(gòu)建網(wǎng)絡(luò)對象函數(shù)、構(gòu)建函數(shù)映射表和對象默認(rèn)機制、編制網(wǎng)絡(luò)對象,其特征在于每部分的具體內(nèi)容如下 I.調(diào)用網(wǎng)絡(luò)對象機制的具體方法是應(yīng)用程序向進程內(nèi)網(wǎng)絡(luò)對象容器發(fā)起網(wǎng)絡(luò)對象服務(wù)請求,網(wǎng)絡(luò)對象容器將網(wǎng)絡(luò)對象服務(wù)請求的信息打包;網(wǎng)絡(luò)對象容器通過應(yīng)用程序向服務(wù)器發(fā)送打包后網(wǎng)絡(luò)對象服務(wù)請求的信息;服務(wù)器通過信息交換分組向組內(nèi)成員發(fā)送打包后網(wǎng)絡(luò)對象服務(wù)請求的信息,實現(xiàn)組內(nèi)成員信息同步;服務(wù)器對打包后網(wǎng)絡(luò)對象服務(wù)請求的信息進行解包,服務(wù)器利用解包后的網(wǎng)絡(luò)對象服務(wù)請求的信息發(fā)起與之對應(yīng)的網(wǎng)絡(luò)對象的調(diào)用;除調(diào)用發(fā)起客戶端外的其他所有的遠程客戶端收到來自服務(wù)器的打包后網(wǎng)絡(luò)對象服務(wù)請求的信息后,通過網(wǎng)絡(luò)對象容器解包,然后利用解包后的網(wǎng)絡(luò)對象服務(wù)請求的信息發(fā)起與之對應(yīng)的網(wǎng)絡(luò)對象的調(diào)用;所述的網(wǎng)絡(luò)對象服務(wù)請求包括發(fā)布網(wǎng)絡(luò)對象、獲得網(wǎng)絡(luò)對象、刪除網(wǎng)絡(luò)對象、調(diào)用網(wǎng)絡(luò)函數(shù)、修改網(wǎng)絡(luò)對象屬性;打包和解包采用常用的內(nèi)存序列化的方法; II .實現(xiàn)網(wǎng)絡(luò)對象回調(diào)的具體方法是網(wǎng)絡(luò)對象機制提供三個層次的回調(diào),分別是基于網(wǎng)絡(luò)對象容器模塊層的回調(diào)、基于具體對象的通用回調(diào)、基于用戶自定義對象的特殊回調(diào);對于基于網(wǎng)絡(luò)對象容器模塊層的回調(diào),所有網(wǎng)絡(luò)對象被處理的時候,都進行無條件回調(diào);對于基于具體對象的通用回調(diào),通過對象內(nèi)置的回調(diào)函數(shù)指針回調(diào),所述的回調(diào)函數(shù)指針指向應(yīng)用程序的代碼段;對于基于用戶自定義對象的特殊回調(diào),通過用戶自定義的回調(diào)函數(shù)指針回調(diào),所述的回調(diào)函數(shù)指針指向應(yīng)用程序的代碼段; III.設(shè)定網(wǎng)絡(luò)對象接口,具體是網(wǎng)絡(luò)對象機制提供網(wǎng)絡(luò)對象基礎(chǔ)類,用戶在使用網(wǎng)絡(luò)對象機制時從網(wǎng)絡(luò)對象基礎(chǔ)類繼承構(gòu)造出網(wǎng)絡(luò)對象;所述的網(wǎng)絡(luò)對象基礎(chǔ)類提供如下內(nèi)容①提供變量區(qū)域,包括對象的創(chuàng)建者、讀取者、分組交換號碼;②提供基本函數(shù),包括獲取對象編號、獲取類名、設(shè)置與應(yīng)用程序的回調(diào)接口;③提供網(wǎng)絡(luò)對象數(shù)據(jù)打包和解包函數(shù),即寫對象和讀對象;④提供網(wǎng)絡(luò)對象調(diào)用響應(yīng)函數(shù)、獲得和設(shè)置網(wǎng)絡(luò)對象屬性函數(shù);所述的網(wǎng)絡(luò)對象屬性函數(shù)包括獲取參數(shù)值函數(shù)、解析對象屬性函數(shù)、獲取參數(shù)類型函數(shù);所述的獲取參數(shù)值函數(shù)用于獲得參數(shù)值,如參數(shù)值為簡單類型,則返回簡單類型的數(shù)據(jù)指針,如是簡單類型之外的類型,則認(rèn)為參數(shù)值為對象,實例化對象,并返回對象的數(shù)據(jù)指針;所述的簡單類型包括字節(jié)類型、短整型、整型、長整型、字符串類型;所述的解析對象屬性函數(shù)用于解析參數(shù),是一個網(wǎng)絡(luò)對象函數(shù)參數(shù)的序列化信息; 所述的獲取參數(shù)類型函數(shù)用于獲得參數(shù)類型,如參數(shù)類型為簡單類型,直接返回該簡單類型的類型名稱,如是簡單類型之外的類型,則認(rèn)為參數(shù)值為對象,返回對象的類型名稱;所述的網(wǎng)絡(luò)對象調(diào)用響應(yīng)函數(shù)用于當(dāng)網(wǎng)絡(luò)對象收到來自遠程應(yīng)用程序的服務(wù)請求后, 根據(jù)請求中的函數(shù)名查找函數(shù)映射表,找到對應(yīng)的網(wǎng)絡(luò)對象函數(shù),完成調(diào)用,即數(shù)據(jù)同步;IV .網(wǎng)絡(luò)對象的調(diào)用響應(yīng)包括支持本地應(yīng)用程序調(diào)用的響應(yīng)和支持遠程應(yīng)用程序調(diào)用的響應(yīng);網(wǎng)絡(luò)對象提供業(yè)務(wù)函數(shù),當(dāng)本地應(yīng)用程序代碼發(fā)起對網(wǎng)絡(luò)對象的函數(shù)調(diào)用時,網(wǎng)絡(luò)對象使用業(yè)務(wù)函數(shù)來完成對本地應(yīng)用程序調(diào)用的響應(yīng);本地應(yīng)用程序使用面向?qū)ο笳Z言的調(diào)用方式來調(diào)用網(wǎng)絡(luò)對象的每個業(yè)務(wù)函數(shù);網(wǎng)絡(luò)對象提供服務(wù)響應(yīng)函數(shù),當(dāng)客戶端發(fā)起對網(wǎng)絡(luò)對象函數(shù)調(diào)用后,其他分布于各客戶端和服務(wù)器上的同名網(wǎng)絡(luò)對象實例進行同步操作,執(zhí)行同名函數(shù),實現(xiàn)同步操作,完成遠程應(yīng)用程序調(diào)用的響應(yīng);網(wǎng)絡(luò)對象業(yè)務(wù)函數(shù)兼?zhèn)溥h程調(diào)用響應(yīng)和發(fā)起遠程調(diào)用兩個作用,每個網(wǎng)絡(luò)對象的代碼在調(diào)用發(fā)起客戶端、服務(wù)器、調(diào)用響應(yīng)客戶端之間是公用的;業(yè)務(wù)函數(shù)內(nèi)部做判斷,最后是否要把調(diào)用向遠程發(fā)起;當(dāng)作為調(diào)用發(fā)起者時,通過參數(shù)告知函數(shù)內(nèi)部,這個是作為發(fā)起者,函數(shù)最后要發(fā)起遠程調(diào)用,而作為服務(wù)響應(yīng)者時,最后這段代碼應(yīng)該不執(zhí)行;否則,會出現(xiàn)循環(huán)調(diào)用的情況;V.構(gòu)建網(wǎng)絡(luò)對象函數(shù)網(wǎng)絡(luò)對象函數(shù)包括服務(wù)響應(yīng)函數(shù)和業(yè)務(wù)函數(shù),在構(gòu)造網(wǎng)絡(luò)對象模型時,需要申明服務(wù)響應(yīng)函數(shù)和業(yè)務(wù)函數(shù)兩個函數(shù);所述的服務(wù)響應(yīng)函數(shù)是將業(yè)務(wù)函數(shù)加固定前綴名而成,業(yè)務(wù)函數(shù)的定義和面向?qū)ο缶幊陶Z言的定義相同;服務(wù)響應(yīng)函數(shù)內(nèi)部先對來自打包后的遠程應(yīng)用程序的網(wǎng)絡(luò)對象請求解包,然后調(diào)用業(yè)務(wù)函數(shù);網(wǎng)絡(luò)對象函數(shù),通過函數(shù)聲明宏、函數(shù)定義開始宏、函數(shù)定義結(jié)束宏完成網(wǎng)絡(luò)對象函數(shù)的框架搭建;VI.構(gòu)建函數(shù)映射表和對象默認(rèn)機制網(wǎng)絡(luò)對象提供函數(shù)映射表,用于記錄網(wǎng)絡(luò)對象函數(shù)名稱與網(wǎng)絡(luò)對象函數(shù)之間的映射關(guān)系;在網(wǎng)絡(luò)對象機制中,使用函數(shù)映射定義開始宏、函數(shù)映射項定義宏、函數(shù)映射定義結(jié)束宏來填寫映射表內(nèi)容;當(dāng)網(wǎng)絡(luò)對象收到來自遠程應(yīng)用程序的服務(wù)請求后,根據(jù)請求中的函數(shù)名查找函數(shù)映射表,找到對應(yīng)的網(wǎng)絡(luò)對象函數(shù),完成調(diào)用即數(shù)據(jù)同步;網(wǎng)絡(luò)對象機制提供網(wǎng)絡(luò)對象默認(rèn)構(gòu)造開始宏和結(jié)束宏來構(gòu)造網(wǎng)絡(luò)對象的默認(rèn)機制行為;所述的默認(rèn)機制行為包括對象調(diào)用響應(yīng)函數(shù)獲得網(wǎng)絡(luò)對象類型名稱和定義函數(shù)映射表;νπ.編制網(wǎng)絡(luò)對象的具體步驟是①從網(wǎng)絡(luò)對象基礎(chǔ)類繼承得到新增網(wǎng)絡(luò)對象;②定義用戶需要的業(yè)務(wù)數(shù)據(jù)成員變量、面向業(yè)務(wù)的回調(diào)接口;③在類定義中使用網(wǎng)絡(luò)對象默認(rèn)構(gòu)造開始宏和結(jié)束宏來構(gòu)造網(wǎng)絡(luò)對象的默認(rèn)行為;④使用函數(shù)聲明宏、函數(shù)定義開始宏和結(jié)束宏完成網(wǎng)絡(luò)對象函數(shù)的構(gòu)造;⑤在函數(shù)定義開始宏和結(jié)束宏之間填寫用戶的業(yè)務(wù)代碼;⑥使用函數(shù)映射定義開始宏、函數(shù)映射項定義宏、函數(shù)映射定義結(jié)束宏來完成網(wǎng)絡(luò)對象函數(shù)名稱和函數(shù)代碼指針的映射。
全文摘要
本發(fā)明涉及一種遠程數(shù)據(jù)傳輸中的數(shù)據(jù)同步方法?,F(xiàn)有分布對象技術(shù)架構(gòu)應(yīng)用起來比較復(fù)雜。本發(fā)明方法包括調(diào)用網(wǎng)絡(luò)對象機制、實現(xiàn)網(wǎng)絡(luò)對象回調(diào)、設(shè)定網(wǎng)絡(luò)對象接口、網(wǎng)絡(luò)對象的調(diào)用響應(yīng)、構(gòu)建網(wǎng)絡(luò)對象函數(shù)、構(gòu)建函數(shù)映射表和對象默認(rèn)機制、編制網(wǎng)絡(luò)對象。本發(fā)明實現(xiàn)了對象在客戶端和服務(wù)器之間的傳遞、調(diào)用和同步更改信息。本發(fā)明的非常簡單易用、輕量級技術(shù)架構(gòu),同時考慮到如實現(xiàn)一個在線課堂內(nèi)分組交換數(shù)據(jù)的特點?;诒景l(fā)明的技術(shù)架構(gòu),可快速構(gòu)建網(wǎng)絡(luò)在線課堂的文檔、白板、背景圖片、用戶權(quán)限、同步事件、投票、音視頻控制等信息共享處理,程序員不必關(guān)心網(wǎng)絡(luò)間數(shù)據(jù)的傳遞細(xì)節(jié)。
文檔編號H04L12/24GK102523128SQ20111045783
公開日2012年6月27日 申請日期2011年12月31日 優(yōu)先權(quán)日2011年12月31日
發(fā)明者李群巍, 胡開荊 申請人:浙江萬朋網(wǎng)絡(luò)技術(shù)有限公司