两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

一種結(jié)構(gòu)化數(shù)據(jù)的序列化、反序列化方法、裝置和系統(tǒng)的制作方法

文檔序號(hào):6502468閱讀:114來(lái)源:國(guó)知局
一種結(jié)構(gòu)化數(shù)據(jù)的序列化、反序列化方法、裝置和系統(tǒng)的制作方法
【專利摘要】本發(fā)明實(shí)施例公開了一種結(jié)構(gòu)化數(shù)據(jù)的序列化、反序列化方法、裝置和系統(tǒng),其中,所述所示結(jié)構(gòu)化數(shù)據(jù)的序列化方法包括:獲取第一元數(shù)據(jù)描述文件;獲取結(jié)構(gòu)化數(shù)據(jù);根據(jù)獲取的所述第一元數(shù)據(jù)描述文件,對(duì)所述結(jié)構(gòu)化數(shù)據(jù)進(jìn)行序列化。通過(guò)獲取第一元數(shù)據(jù)描述文件,根據(jù)第一元數(shù)據(jù)描述文件,對(duì)獲取的結(jié)構(gòu)化數(shù)據(jù)進(jìn)行序列化;使得生成的序列化數(shù)據(jù)中減少了除純粹數(shù)據(jù)外的附加數(shù)據(jù),如對(duì)數(shù)據(jù)類型描述等描述數(shù)據(jù)的內(nèi)容,降低了數(shù)據(jù)傳輸時(shí)消耗的資源,提高了數(shù)據(jù)傳輸?shù)男?,另一方面,可以?jiǎn)化了通信對(duì)端在反序列化過(guò)程中確定字段帶來(lái)的邏輯處理開銷。
【專利說(shuō)明】一種結(jié)構(gòu)化數(shù)據(jù)的序列化、反序列化方法、裝置和系統(tǒng)

【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及通信【技術(shù)領(lǐng)域】,具體涉及一種結(jié)構(gòu)化數(shù)據(jù)的序列化、反序列化方法、裝置和系統(tǒng)。

【背景技術(shù)】
[0002]在計(jì)算機(jī)和互聯(lián)網(wǎng)領(lǐng)域,有大量的網(wǎng)絡(luò)數(shù)據(jù)交換過(guò)程。在網(wǎng)絡(luò)游戲中尤其如此,需要有大量的網(wǎng)絡(luò)數(shù)據(jù)交互。在網(wǎng)絡(luò)資源有限的情況下,能夠有效地減少序列化數(shù)據(jù)空間,簡(jiǎn)化序列化或反序列化過(guò)程對(duì)網(wǎng)絡(luò)應(yīng)用至關(guān)重要。
[0003]現(xiàn)有技術(shù)中結(jié)構(gòu)化數(shù)據(jù)序列化技術(shù)主要是以谷歌(Google)公司的protobuf。protobuf編譯器根據(jù)定義的元數(shù)據(jù)描述文件,生成消息的序列化代碼,避免使用者自行實(shí)現(xiàn)網(wǎng)絡(luò)編解代碼導(dǎo)致出錯(cuò)。
[0004]序列化是指將結(jié)構(gòu)化的數(shù)據(jù)按一定的編碼規(guī)范轉(zhuǎn)換成指定格式的過(guò)程,反序列化是指將轉(zhuǎn)成指定格式的數(shù)據(jù)解析成原始的結(jié)構(gòu)化數(shù)據(jù)的過(guò)程。舉例來(lái)說(shuō)=Person是一個(gè)表示人的對(duì)象類型,person是一個(gè)Person類型的對(duì)象,將person存到一個(gè)對(duì)應(yīng)的可擴(kuò)展標(biāo)記語(yǔ)言(XML, Extensible Markup Language)文檔中的過(guò)程就是一種序列化,而解析XML生成對(duì)應(yīng)Person類型對(duì)象person的過(guò)程,就是一個(gè)反序列化的過(guò)程。在這里結(jié)構(gòu)化數(shù)據(jù)指的就是Person類型的數(shù)據(jù),一定的編碼規(guī)范指的就是XML文檔的規(guī)范。XML是一種簡(jiǎn)單的序列化方式,用XML序列化的好處是,XML的通用性比較,另外,XML是一種文本格式,對(duì)人閱讀比較友好,但是XML方式比較占空間,效率不高。通常,比較高效的序列化都是采用二進(jìn)制方式的,將要序列化的結(jié)構(gòu)化數(shù)據(jù),按照一定的編碼規(guī)范,轉(zhuǎn)換成一串二進(jìn)制的字節(jié)流存儲(chǔ)下來(lái),需要用的時(shí)候再?gòu)亩M(jìn)制的字節(jié)流中反序列化對(duì)應(yīng)的結(jié)構(gòu)化的數(shù)據(jù)。
[0005]經(jīng)過(guò)protobuf編譯器生成的代碼序列化的二進(jìn)制數(shù)據(jù)采用標(biāo)簽長(zhǎng)度數(shù)據(jù)值(TLV, Tag+Length+Value)格式編排,其中數(shù)據(jù)中的Tag內(nèi)容主要包含數(shù)據(jù)類型ID和字段域ID信息。在protobuf編譯器反序列化的過(guò)程中,根據(jù)TLV格式中的字段中的Tag可以獲取到數(shù)據(jù)類型和字段域ID動(dòng)態(tài)確定每個(gè)字段,并反序列化對(duì)應(yīng)的字段。
[0006]從純粹的數(shù)據(jù)角度來(lái)看,protobuf序列化數(shù)據(jù)中包括的Tag部分是對(duì)數(shù)據(jù)的描述內(nèi)容,并非數(shù)據(jù)本身,因此,在數(shù)據(jù)傳輸過(guò)程需要將Tag部分也要進(jìn)行傳輸,從而增加了序列化后的數(shù)據(jù)大小,同時(shí),也增加了反序列化邏輯中動(dòng)態(tài)確定字段域ID帶來(lái)的處理開銷。


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

[0007]本發(fā)明實(shí)施例提供了一種結(jié)構(gòu)化數(shù)據(jù)的序列化、反序列化方法、裝置和系統(tǒng),在數(shù)據(jù)傳輸過(guò)程不需要將Tag部分也要進(jìn)行傳輸,減少了序列化后的數(shù)據(jù)大小。
[0008]本發(fā)明實(shí)施例提供了一種結(jié)構(gòu)化數(shù)據(jù)的序列化方法,所示方法包括:
[0009]獲取第一元數(shù)據(jù)描述文件;
[0010]獲取結(jié)構(gòu)化數(shù)據(jù);
[0011]根據(jù)獲取的所述第一元數(shù)據(jù)描述文件,對(duì)所述結(jié)構(gòu)化數(shù)據(jù)進(jìn)行序列化。
[0012]本發(fā)明實(shí)施例還提供了一種反序列化方法,所述方法包括:
[0013]獲取第二元數(shù)據(jù)描述文件;
[0014]獲取序列化的數(shù)據(jù);
[0015]根據(jù)獲取的所述第二元數(shù)據(jù)描述文件,對(duì)獲取的所述序列化的數(shù)據(jù)執(zhí)行反序列化操作。
[0016]本發(fā)明實(shí)施例還提供了一種結(jié)構(gòu)化數(shù)據(jù)的序列化裝置,所述裝置包括:第一獲取單元,第二獲取單元,和序列化單元,
[0017]所述第一獲取單元,用于獲取第一元數(shù)據(jù)描述文件;
[0018]所述第二獲取單元,用于獲取結(jié)構(gòu)化數(shù)據(jù);
[0019]所述第三獲取單元,用于根據(jù)獲取的所述第一元數(shù)據(jù)描述文件,對(duì)所述結(jié)構(gòu)化數(shù)據(jù)進(jìn)行序列化。
[0020]本發(fā)明實(shí)施例還提供了一種反序列化裝置,所述裝置包括:第三獲取單元,第四獲取單元,和反序列化單元,
[0021]所述第三獲取單元,用于獲取第二元數(shù)據(jù)描述文件;
[0022]所述第四獲取單元,用于獲取序列化的數(shù)據(jù);
[0023]所述反序列化單元,用于根據(jù)獲取的所述第二元數(shù)據(jù)描述文件,對(duì)獲取的所述序列化的數(shù)據(jù)執(zhí)行反序列化操作。
[0024]本發(fā)明實(shí)施例還提供了一種通信系統(tǒng),包括:序列化裝置和反序列化裝置;
[0025]所述序列化裝置,用于獲取第一元數(shù)據(jù)描述文件;獲取結(jié)構(gòu)化數(shù)據(jù);根據(jù)獲取的所述第一元數(shù)據(jù)描述文件,對(duì)所述結(jié)構(gòu)化數(shù)據(jù)進(jìn)行序列化;
[0026]所述反序列化裝置,用于獲取第二元數(shù)據(jù)描述文件;獲取序列化的數(shù)據(jù);根據(jù)獲取的所述第二元數(shù)據(jù)描述文件,對(duì)獲取的所述序列化的數(shù)據(jù)執(zhí)行反序列化操作。
[0027]從以上技術(shù)方案可以看出,本發(fā)明實(shí)施例具有以下優(yōu)點(diǎn):通過(guò)獲取第一元數(shù)據(jù)描述文件,根據(jù)第一元數(shù)據(jù)描述文件,對(duì)獲取的結(jié)構(gòu)化數(shù)據(jù)進(jìn)行序列化;使得生成的序列化數(shù)據(jù)中減少了除純粹數(shù)據(jù)外的附加數(shù)據(jù),如對(duì)數(shù)據(jù)類型描述等描述數(shù)據(jù)的內(nèi)容,降低了數(shù)據(jù)傳輸時(shí)消耗的資源,提高了數(shù)據(jù)傳輸?shù)男?,另一方面,可以?jiǎn)化了通信對(duì)端在反序列化過(guò)程中確定字段帶來(lái)的邏輯處理開銷。

【專利附圖】

【附圖說(shuō)明】
[0028]為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0029]圖1為本發(fā)明實(shí)施例提供的一種結(jié)構(gòu)化數(shù)據(jù)的序列化方法流程簡(jiǎn)圖;
[0030]圖2為本發(fā)明實(shí)施例提供的另一種結(jié)構(gòu)化數(shù)據(jù)的序列化方法流程簡(jiǎn)圖;
[0031]圖3為本發(fā)明實(shí)施例提供的一種反序列化方法流程簡(jiǎn)圖;
[0032]圖4為本發(fā)明實(shí)施例提供的一種反序列化方法流程簡(jiǎn)圖;
[0033]圖5為本發(fā)明實(shí)施例提供的一種序列化裝置示意簡(jiǎn)圖;
[0034]圖6為本發(fā)明實(shí)施例提供的一種反序列化裝置示意簡(jiǎn)圖;
[0035]圖7為本發(fā)明實(shí)施例提供的一種通信系統(tǒng)示意簡(jiǎn)圖;
[0036]圖8為本發(fā)明實(shí)施例提供的一種序列化裝置示意簡(jiǎn)圖;
[0037]圖9為本發(fā)明實(shí)施例提供的一種反序列化裝置示意簡(jiǎn)圖。

【具體實(shí)施方式】
[0038]本發(fā)明實(shí)施例提供的技術(shù)方案通過(guò)在應(yīng)用層數(shù)據(jù)交互的通信雙方中都存儲(chǔ)有兼容的元數(shù)據(jù)描述文件,通信雙方以兼容的元數(shù)據(jù)描述文件理解序列化過(guò)程和反序列化過(guò)程,因此,在序列化后的數(shù)據(jù)中不需要包括Tag部分?jǐn)?shù)據(jù),由元數(shù)據(jù)描述文件中便于設(shè)備理解如何序列化,以及如何反序列化。從而在數(shù)據(jù)傳輸過(guò)程中不必傳輸Tag部分,從而降低了數(shù)據(jù)傳輸時(shí)對(duì)網(wǎng)絡(luò)資源的消耗,也使得反序列化的邏輯處理開銷降低。
[0039]如圖1所示,為本發(fā)明實(shí)施例提供了一種結(jié)構(gòu)化數(shù)據(jù)的序列化方法,該方法包括:
[0040]步驟101,獲取第一元數(shù)據(jù)描述文件;其中,在第一元數(shù)據(jù)描述文件可以通過(guò)XML以高可讀性方式描述結(jié)構(gòu)化對(duì)象。其中對(duì)結(jié)構(gòu)中每個(gè)成員字段的描述中可以包括順序,字段類型,或者字段版本號(hào)(支持協(xié)議向后兼容性)等其中任意組合。這里對(duì)第一元數(shù)據(jù)描述文件的說(shuō)明僅是便于理解的說(shuō)明,并非對(duì)本發(fā)明實(shí)施例的限制。
[0041]需要理解的是,第一元數(shù)據(jù)描述文件可以是用戶預(yù)先輸入的,也可以是設(shè)備根據(jù)數(shù)據(jù)庫(kù)中的結(jié)構(gòu)化數(shù)據(jù)而獲取的,將結(jié)構(gòu)化數(shù)據(jù)中存儲(chǔ)的數(shù)據(jù)類型和先后順序等用于描述結(jié)構(gòu)化數(shù)據(jù)的信息記錄在第一元數(shù)據(jù)文件中。
[0042]舉例來(lái)說(shuō),通信雙方A、B進(jìn)行協(xié)議交互,A、B側(cè)都有一份元數(shù)據(jù)描述文件metafile
如下:
[0043]

【權(quán)利要求】
1.一種結(jié)構(gòu)化數(shù)據(jù)的序列化方法,其特征在于,所示方法包括: 獲取第一元數(shù)據(jù)描述文件; 獲取結(jié)構(gòu)化數(shù)據(jù); 根據(jù)獲取的所述第一元數(shù)據(jù)描述文件,對(duì)所述結(jié)構(gòu)化數(shù)據(jù)進(jìn)行序列化。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述獲取第一元數(shù)據(jù)描述文件,具體包括: 根據(jù)預(yù)置的第一元數(shù)據(jù)描述文件,從而獲取所述第一元數(shù)據(jù)描述文件; 或者,根據(jù)所述結(jié)構(gòu)化數(shù)據(jù),獲取所述第一元數(shù)據(jù)描述文件。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述根據(jù)獲取的第一元數(shù)據(jù)描述文件,對(duì)獲取的結(jié)構(gòu)化數(shù)據(jù)進(jìn)行序列化,具體包括: 根據(jù)第一元數(shù)據(jù)描述文件中的數(shù)據(jù)類型,將結(jié)構(gòu)化數(shù)據(jù)序列化為包括數(shù)據(jù)長(zhǎng)度(Length)和數(shù)據(jù)值(Value),或者僅包括數(shù)據(jù)值(Value)的序列化數(shù)據(jù)。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述根據(jù)獲取的所述第一元數(shù)據(jù)描述文件,對(duì)所述結(jié)構(gòu)化數(shù)據(jù)進(jìn)行序列化,具體包括: 根據(jù)所述第一數(shù)據(jù)描述文件將結(jié)構(gòu)化數(shù)據(jù)中字段順序的執(zhí)行序列化; 依次判斷每個(gè)字段序列化是否成功;如果成功,則繼續(xù)執(zhí)行對(duì)下一個(gè)字段的序列化操作,如果失敗,則結(jié)束。
5.一種反序列化方法,其特征在于,所述方法包括: 獲取第二元數(shù)據(jù)描述文件; 獲取序列化的數(shù)據(jù); 根據(jù)獲取的所述第二元數(shù)據(jù)描述文件,對(duì)獲取的所述序列化的數(shù)據(jù)執(zhí)行反序列化操作。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述第二元數(shù)據(jù)描述文件至少包括:數(shù)據(jù)的類型描述。
7.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述根據(jù)獲取的所述第二元數(shù)據(jù)描述文件,對(duì)獲取的所述序列化的數(shù)據(jù)執(zhí)行反序列化操作,具體包括: 根據(jù)所述第二元數(shù)據(jù)描述文件,對(duì)所述序列化數(shù)據(jù)中每一個(gè)字段進(jìn)行反序列化; 依次判斷每個(gè)字段反序列化是否成功,若成功,則繼續(xù)執(zhí)行對(duì)下一個(gè)字段的反序列化操作,若失敗,則結(jié)束。
8.—種結(jié)構(gòu)化數(shù)據(jù)的序列化裝置,其特征在于,所述裝置包括:第一獲取單元,第二獲取單元,和序列化單元, 所述第一獲取單元,用于獲取第一元數(shù)據(jù)描述文件; 所述第二獲取單元,用于獲取結(jié)構(gòu)化數(shù)據(jù); 所述第三獲取單元,用于根據(jù)獲取的所述第一元數(shù)據(jù)描述文件,對(duì)所述結(jié)構(gòu)化數(shù)據(jù)進(jìn)行序列化。
9.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述第一獲取單元,具體用于: 根據(jù)預(yù)置的第一元數(shù)據(jù)描述文件,從而獲取所述第一元數(shù)據(jù)描述文件; 或者,根據(jù)所述結(jié)構(gòu)化數(shù)據(jù),獲取所述第一元數(shù)據(jù)描述文件。
10.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述序列化單元具體包括:根據(jù)第一元數(shù)據(jù)描述文件中的數(shù)據(jù)類型,將結(jié)構(gòu)化數(shù)據(jù)序列化為包括數(shù)據(jù)長(zhǎng)度(Length)和數(shù)據(jù)值(Value),或者僅包括數(shù)據(jù)值(Value)的序列化數(shù)據(jù)。
11.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述序列化單元,具體包括:字段序列化單元和第一判斷單元; 所述字段序列化單元,用于根據(jù)所述第一數(shù)據(jù)描述文件將結(jié)構(gòu)化數(shù)據(jù)中字段順序的執(zhí)行序列化; 所述第一判斷單元,用于依次判斷每個(gè)字段序列化是否成功;如果成功,則通知所述字段序列化單元繼續(xù)執(zhí)行對(duì)下一個(gè)字段的序列化操作,如果失敗,則結(jié)束。
12.一種反序列化裝置,其特征在于,所述裝置包括:第三獲取單元,第四獲取單元,和反序列化單元, 所述第三獲取單元,用于獲取第二元數(shù)據(jù)描述文件; 所述第四獲取單元,用于獲取序列化的數(shù)據(jù); 所述反序列化單元,用于根據(jù)獲取的所述第二元數(shù)據(jù)描述文件,對(duì)獲取的所述序列化的數(shù)據(jù)執(zhí)行反序列化操作。
13.根據(jù)權(quán)利要求12所述的裝置,其特征在于,所述第二元數(shù)據(jù)描述文件至少包括:數(shù)據(jù)的類型描述。
14.根據(jù)權(quán)利要求12所述的方法,其特征在于,所述反序列化單元具體包括:字段反序列化單元和第二判斷單元, 所述字段反序列化單元,用于根據(jù)所述第二元數(shù)據(jù)描述文件,對(duì)所述序列化數(shù)據(jù)中每一個(gè)字段進(jìn)行反序列化; 所述第二判斷單元,用于依次判斷每個(gè)字段反序列化是否成功,若成功,則通知所述字段反序列化單元繼續(xù)執(zhí)行對(duì)下一個(gè)字段的反序列化操作,若失敗,則結(jié)束。
15.一種通信系統(tǒng),其特征在于,包括:序列化裝置和反序列化裝置; 所述序列化裝置,用于獲取第一元數(shù)據(jù)描述文件;獲取結(jié)構(gòu)化數(shù)據(jù);根據(jù)獲取的所述第一元數(shù)據(jù)描述文件,對(duì)所述結(jié)構(gòu)化數(shù)據(jù)進(jìn)行序列化; 所述反序列化裝置,用于獲取第二元數(shù)據(jù)描述文件;獲取序列化的數(shù)據(jù);根據(jù)獲取的所述第二元數(shù)據(jù)描述文件,對(duì)獲取的所述序列化的數(shù)據(jù)執(zhí)行反序列化操作。
16.根據(jù)權(quán)利要求15所述的通信系統(tǒng),其特征在于,所述第一元數(shù)據(jù)描述文件與所述第二元數(shù)據(jù)描述文件采用相同的協(xié)議的元數(shù)據(jù)描述,或者,采用兼容的協(xié)議的元數(shù)據(jù)描述。
【文檔編號(hào)】G06F17/30GK104077335SQ201310163947
【公開日】2014年10月1日 申請(qǐng)日期:2013年5月7日 優(yōu)先權(quán)日:2013年5月7日
【發(fā)明者】聶志明 申請(qǐng)人:騰訊科技(深圳)有限公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
武安市| 垣曲县| 永清县| 仁化县| 崇阳县| 星子县| 嘉定区| 广丰县| 岳阳县| 延庆县| 益阳市| 额尔古纳市| 渭源县| 临邑县| 锦州市| 大悟县| 交城县| 墨玉县| 陵川县| 横峰县| 项城市| 奈曼旗| 白银市| 禄丰县| 南通市| 南漳县| 江川县| 屏南县| 沧州市| 临安市| 阿勒泰市| 酒泉市| 新竹县| 巫溪县| 白朗县| 石河子市| 长春市| 温州市| 伊春市| 锡林郭勒盟| 耒阳市|