CN104077335B - 一种结构化数据的序列化、反序列化方法、装置和系统 - Google Patents
一种结构化数据的序列化、反序列化方法、装置和系统 Download PDFInfo
- Publication number
- CN104077335B CN104077335B CN201310163947.XA CN201310163947A CN104077335B CN 104077335 B CN104077335 B CN 104077335B CN 201310163947 A CN201310163947 A CN 201310163947A CN 104077335 B CN104077335 B CN 104077335B
- Authority
- CN
- China
- Prior art keywords
- metadata
- data
- file
- unserializing
- serializing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 64
- 238000004891 communication Methods 0.000 claims abstract description 14
- 238000012163 sequencing technique Methods 0.000 claims description 12
- 230000008569 process Effects 0.000 abstract description 34
- 238000012545 processing Methods 0.000 abstract description 13
- 230000005540 biological transmission Effects 0.000 abstract description 7
- 238000012546 transfer Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 9
- 238000003860 storage Methods 0.000 description 8
- 230000008859 change Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 5
- 238000007667 floating Methods 0.000 description 4
- 238000000547 structure data Methods 0.000 description 4
- 238000012360 testing method Methods 0.000 description 4
- 241001269238 Data Species 0.000 description 3
- 230000015572 biosynthetic process Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 229910002056 binary alloy Inorganic materials 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/06—Notations for structuring of protocol data, e.g. abstract syntax notation one [ASN.1]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/11—File system administration, e.g. details of archiving or snapshots
- G06F16/116—Details of conversion of file system types or formats
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
- G06F16/164—File meta data generation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/258—Data format conversion from or to a database
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4488—Object-oriented
- G06F9/4493—Object persistence
Abstract
本发明实施例公开了一种结构化数据的序列化、反序列化方法、装置和系统,其中,所述所示结构化数据的序列化方法包括:获取第一元数据描述文件;获取结构化数据;根据获取的所述第一元数据描述文件,对所述结构化数据进行序列化。通过获取第一元数据描述文件,根据第一元数据描述文件,对获取的结构化数据进行序列化;使得生成的序列化数据中减少了除纯粹数据外的附加数据,如对数据类型描述等描述数据的内容,降低了数据传输时消耗的资源,提高了数据传输的效率,另一方面,可以简化了通信对端在反序列化过程中确定字段带来的逻辑处理开销。
Description
技术领域
本发明涉及通信技术领域,具体涉及一种结构化数据的序列化、反序列化方法、装置和系统。
背景技术
在计算机和互联网领域,有大量的网络数据交换过程。在网络游戏中尤其如此,需要有大量的网络数据交互。在网络资源有限的情况下,能够有效地减少序列化数据空间,简化序列化或反序列化过程对网络应用至关重要。
现有技术中结构化数据序列化技术主要是以谷歌(Google)公司的protobuf。protobuf编译器根据定义的元数据描述文件,生成消息的序列化代码,避免使用者自行实现网络编解代码导致出错。
序列化是指将结构化的数据按一定的编码规范转换成指定格式的过程,反序列化是指将转成指定格式的数据解析成原始的结构化数据的过程。举例来说:Person是一个表示人的对象类型,person是一个Person类型的对象,将person存到一个对应的可扩展标记语言(XML,Extensible Markup Language)文档中的过程就是一种序列化,而解析XML生成对应Person类型对象person的过程,就是一个反序列化的过程。在这里结构化数据指的就是Person类型的数据,一定的编码规范指的就是XML文档的规范。XML是一种简单的序列化方式,用XML序列化的好处是,XML的通用性比较,另外,XML是一种文本格式,对人阅读比较友好,但是XML方式比较占空间,效率不高。通常,比较高效的序列化都是采用二进制方式的,将要序列化的结构化数据,按照一定的编码规范,转换成一串二进制的字节流存储下来,需要用的时候再从二进制的字节流中反序列化对应的结构化的数据。
经过protobuf编译器生成的代码序列化的二进制数据采用标签长度数据值(TLV,Tag+Length+Value)格式编排,其中数据中的Tag内容主要包含数据类型ID和字段域ID信息。在protobuf编译器反序列化的过程中,根据TLV格式中的字段中的Tag可以获取到数据类型和字段域ID动态确定每个字段,并反序列化对应的字段。
从纯粹的数据角度来看,protobuf序列化数据中包括的Tag部分是对数据的描述内容,并非数据本身,因此,在数据传输过程需要将Tag部分也要进行传输,从而增加了序列化后的数据大小,同时,也增加了反序列化逻辑中动态确定字段域ID带来的处理开销。
发明内容
本发明实施例提供了一种结构化数据的序列化、反序列化方法、装置和系统,在数据传输过程不需要将Tag部分也要进行传输,减少了序列化后的数据大小。
本发明实施例提供了一种结构化数据的序列化方法,所示方法包括:
获取第一元数据描述文件;
获取结构化数据;
根据获取的所述第一元数据描述文件,对所述结构化数据进行序列化。
本发明实施例还提供了一种反序列化方法,所述方法包括:
获取第二元数据描述文件;
获取序列化的数据;
根据获取的所述第二元数据描述文件,对获取的所述序列化的数据执行反序列化操作。
本发明实施例还提供了一种结构化数据的序列化装置,所述装置包括:第一获取单元,第二获取单元,和序列化单元,
所述第一获取单元,用于获取第一元数据描述文件;
所述第二获取单元,用于获取结构化数据;
所述第三获取单元,用于根据获取的所述第一元数据描述文件,对所述结构化数据进行序列化。
本发明实施例还提供了一种反序列化装置,所述装置包括:第三获取单元,第四获取单元,和反序列化单元,
所述第三获取单元,用于获取第二元数据描述文件;
所述第四获取单元,用于获取序列化的数据;
所述反序列化单元,用于根据获取的所述第二元数据描述文件,对获取的所述序列化的数据执行反序列化操作。
本发明实施例还提供了一种通信系统,包括:序列化装置和反序列化装置;
所述序列化装置,用于获取第一元数据描述文件;获取结构化数据;根据获取的所述第一元数据描述文件,对所述结构化数据进行序列化;
所述反序列化装置,用于获取第二元数据描述文件;获取序列化的数据;根据获取的所述第二元数据描述文件,对获取的所述序列化的数据执行反序列化操作。
从以上技术方案可以看出,本发明实施例具有以下优点:通过获取第一元数据描述文件,根据第一元数据描述文件,对获取的结构化数据进行序列化;使得生成的序列化数据中减少了除纯粹数据外的附加数据,如对数据类型描述等描述数据的内容,降低了数据传输时消耗的资源,提高了数据传输的效率,另一方面,可以简化了通信对端在反序列化过程中确定字段带来的逻辑处理开销。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种结构化数据的序列化方法流程简图;
图2为本发明实施例提供的另一种结构化数据的序列化方法流程简图;
图3为本发明实施例提供的一种反序列化方法流程简图;
图4为本发明实施例提供的一种反序列化方法流程简图;
图5为本发明实施例提供的一种序列化装置示意简图;
图6为本发明实施例提供的一种反序列化装置示意简图;
图7为本发明实施例提供的一种通信系统示意简图;
图8为本发明实施例提供的一种序列化装置示意简图;
图9为本发明实施例提供的一种反序列化装置示意简图。
具体实施方式
本发明实施例提供的技术方案通过在应用层数据交互的通信双方中都存储有兼容的元数据描述文件,通信双方以兼容的元数据描述文件理解序列化过程和反序列化过程,因此,在序列化后的数据中不需要包括Tag部分数据,由元数据描述文件中便于设备理解如何序列化,以及如何反序列化。从而在数据传输过程中不必传输Tag部分,从而降低了数据传输时对网络资源的消耗,也使得反序列化的逻辑处理开销降低。
如图1所示,为本发明实施例提供了一种结构化数据的序列化方法,该方法包括:
步骤101,获取第一元数据描述文件;其中,在第一元数据描述文件可以通过XML以高可读性方式描述结构化对象。其中对结构中每个成员字段的描述中可以包括顺序,字段类型,或者字段版本号(支持协议向后兼容性)等其中任意组合。这里对第一元数据描述文件的说明仅是便于理解的说明,并非对本发明实施例的限制。
需要理解的是,第一元数据描述文件可以是用户预先输入的,也可以是设备根据数据库中的结构化数据而获取的,将结构化数据中存储的数据类型和先后顺序等用于描述结构化数据的信息记录在第一元数据文件中。
举例来说,通信双方A、B进行协议交互,A、B侧都有一份元数据描述文件metafile如下:
为了描述简单,这里假设A往B发送通信协议数据,根据元数据描述文件语义,本发明通信装置将原始结构化数据进行序列化操作输出字节流(生成的字节流中没有T(Tag)信息),字节流经过网络传送到通信端B后,B端通信装置同样根据元数据描述文件语义来反序列化这部分字节流为一个结构化对象。
注明:这里所说的通信装置指的是进行序列化和反序列化的软件设施(下面以DR表示)。
整个过程可以这么理解。
(1)、A端序列化过程:
meta_semantics=DR.load(metafile);
DR.serialize(INPUT meta_semantics,INPUT local_object,OUTPUT byte_stream);
Net.send(byte_stream);
(2)、B端反序列化过程:
meta_semantics=DR.load(metafile);
Net.recv(byte_stream)
DR.deserialize(INPUT meta_semantics,INPUT byte_stream,OUTPUT local_object);
其中DR为基于本专利生成的序列化反序列化软件设施,INPUT为输入源,OUTPUT为输出源。local_object的结构由元数据描述(metafile)确定。
在序列化和反序列化前,都会把元数据描述(metafile)加载生成一个能够方便供软件使用的元数据语义集(为了便于理解这个过程,可以把它理解为C语言编译器生成可执行文件的过程)。
序列化和反序列化都是根据元数据描述语义去理解数据的结构构成的。
通信双方元数据描述是兼容的。
因此,步骤101获取第一元数据描述文件,具体包括:
根据预置的第一元数据描述文件,从而获取所述第一元数据描述文件;
或者,根据所述结构化数据,获取所述第一元数据描述文件。
步骤102,获取结构化数据;其中,结构化数据可以理解为存储在数据库里,可以用二维表结构来逻辑表达实现的数据。
步骤103,根据获取的第一元数据描述文件,对获取的结构化数据进行序列化;
其中,由于第一元数据描述文件中记录有关结构化数据的信息的描述,设备根据第一元数据描述文件和结构化数据,将其序列化。例如,第一元数据描述文件包括:描述结构化数据中包括有浮点型(float)数据和字符串型(string)数据两类,且结构化数据的顺序是先对浮点型数据进行序列化,再对字符串型数据进行序列化,在元数据描述文件中还可以包括对结构化数据的其它描述信息。
优选的,在步骤103中生成序列化的数据的字段中包括数据长度(Length)和数据值(Value),或者仅包括数据值。
通过本发明实施例提供的一种结构化数据的序列化方法,通过获取第一元数据描述文件,根据第一元数据描述文件,对获取的结构化数据进行序列化;使得生成的序列化数据中减少了除纯粹数据外的附加数据,如对数据类型描述等描述数据的内容,降低了数据传输时消耗的资源,提高了数据传输的效率,另一方面,可以简化了通信对端在反序列化过程中确定字段带来的逻辑处理开销。
如图2所示,本发明实施例提供了一种结构化数据的序列化方法的具体操作流程举例。步骤A01,获取第一元数据描述文件;步骤A02,获取结构化数据;步骤A03以第一元数据描述文件中字段定义顺序循环依次把结构化数据中字段序列化成二进制数据,直至步骤A04整个反序列化过程完成;若在步骤A03中有结构化数据中字段序列化成二进制数据失败,则该方法结束。每个字段序列化后的数据中只有数据值部分(V)和可选的长度部分(L)。其中,上述;步骤A03说明的“序列化”是指对结构化对象(即原始数据)中的一个字段进行序列化的操作。
通过本发明实施例提供的一种结构化数据的序列化方法,通过获取第一元数据描述文件,根据第一元数据描述文件,对获取的结构化数据进行序列化;使得生成的序列化数据中减少了除纯粹数据外的附加数据,如对数据类型描述等描述数据的内容,降低了数据传输时消耗的资源,提高了数据传输的效率,另一方面,可以简化了通信对端在反序列化过程中确定字段带来的逻辑处理开销。
如图3所示,本发明实施例提供了一种反序列化方法,该方法包括:
步骤201,获取第二元数据描述文件;其中,第二元数据描述文件可以记录不同数据类型的顺序,或者字段域ID。
需要理解的是,第二元数据描述文件可以是用户预先输入的,也可以是其它方式获取的,将结构化数据中存储的数据类型和先后顺序等用于描述结构化数据的信息记录在第二元数据文件中。
第二元数据文件与第一元数据文件中关于结构化数据的理解是一致的,因此,在反序列化时可以将接收到的序列化数据转换为反序列化数据。
步骤202,获取序列化的数据;该序列化数据可以是二进制数据,但不限于二进制数据。
步骤203,根据获取的第二元数据描述文件,对获取的序列化的数据执行反序列化操作,其中,执行步骤203的操作可以是对每个字段进行反序列化操作,直到所有字段都被反序列化成功,若有字段反序列化失败,则该方法结束。
其中,由于第二元数据描述文件中记录有关序列化数据的信息的描述,设备根据第二元数据描述文件和序列化数据,将其反序列化。例如如图4所示,第二元数据描述文件包括:描述序列化数据中包括有浮点型(float)数据和字符串型(string)数据两类,根据协议的第二元数据描述文件(示例中test)和序列化数据,反序列化的演进过程如下:
第一步中,解析float类型字段,由于float类型数据定长为4字节,直接取出4字节赋值给test中float类型数据tf;序列化指针相应后移4字节。
第二步中,解析string类型字段,string类型不是定长的,所以根据取出的长度值(Length)再去取出test中string数据ts(比如示例中长度值L为3,取出后面3个字节字符赋值给string数据ts)。
示例中test协议一共两个字段,至此反序列完成。
从这个简单的示例中可以看出,整个反序列化过程都是建立在对协议的元数据描述的理解上的。
需要说明的是,本发明实施例中说明的第一元数据描述文件和第二元数据描述文件可以是采用相同的协议的元数据描述,或者,也可以理解为兼容的协议的元数据描述。
由于序列化和反序列化过程利用到元数据描述文件中协议描述字段的顺序,因此,在进行协议变更或者升级的过程中,可以要求:新加(高版本)字段域自增版本号并(最好)添加到消息尾部;或者,已有字段域不能删除或者更改类型ID并不能调整相对顺序。
通过本发明实施例提供的一种反序列化方法,通过获取第二元数据描述文件,根据第二元数据描述文件,对获取的序列化数据进行反序列化;简化了通信设备在反序列化过程中确定字段带来的逻辑处理开销。
如图5所示,为本发明实施例提供了一种序列化装置,该装置包括:第一获取单元501,第二获取单元502,和序列化单元503;
其中,第一获取单元501,用于获取第一元数据描述文件;其中,在第一元数据描述文件可以通过XML以高可读性方式描述结构化对象。其中对结构中每个成员字段的描述中可以包括顺序,字段类型,或者字段版本号(支持协议向后兼容性)等其中任意组合。这里对第一元数据描述文件的说明仅是便于理解的说明,并非对本发明实施例的限制。
需要理解的是,第一元数据描述文件可以是用户预先输入的,也可以是设备根据数据库中的结构化数据而获取的,将结构化数据中存储的数据类型和先后顺序等用于描述结构化数据的信息记录在第一元数据文件中。
第二获取单元502,用于获取结构化数据;其中,结构化数据可以理解为存储在数据库里,可以用二维表结构来逻辑表达实现的数据。
序列化单元503,用于根据获取的第一元数据描述文件,对获取的结构化数据进行序列化;
其中,由于第一元数据描述文件中记录有关结构化数据的信息的描述,设备根据第一元数据描述文件和结构化数据,将其序列化。例如,第一元数据描述文件包括:描述结构化数据中包括有浮点型(float)数据和字符串型(string)数据两类,且结构化数据的顺序是先对浮点型数据进行序列化,再对字符串型数据进行序列化,在元数据描述文件中还可以包括对结构化数据的其它描述信息,此处不能穷举,不应该理解为对本发明实施例的限制。
优选的,在序列化单元503中生成序列化的数据的字段中包括数据长度(Length)和数据值(Value),或者仅包括数据值。
通过本发明实施例提供的一种序列化装置,通过第一获取单元获取第一元数据描述文件,序列化单元根据第一元数据描述文件,对获取的结构化数据进行序列化;使得生成的序列化数据中减少了除纯粹数据外的附加数据,如对数据类型描述等描述数据的内容,降低了数据传输时消耗的资源,提高了数据传输的效率,另一方面,可以简化了通信对端在反序列化过程中确定字段带来的逻辑处理开销。
优选的,序列化单元503具体可以包括:字段序列化单元和第一判断单元;
其中,字段序列化单元用于对结构化数据中每一个字段进行序列化;第一判断单元,用于依次判断每个字段序列化是否成功,若成功则继续执行对下一个字段的序列化操作,若失败,则结束。
如图6所示,本发明实施例提供了一种反序列化装置,该装置包括:第三获取单元601,第四获取单元602,和反序列化单元603。
第三获取单元601,用于获取第二元数据描述文件;其中,第二元数据描述文件可以记录不同数据类型的顺序,或者字段域ID等。
需要理解的是,第二元数据描述文件可以是用户预先输入的,也可以是其它方式获取的,将结构化数据中存储的数据类型和先后顺序等用于描述结构化数据的信息记录在第二元数据文件中。
第二元数据文件与第一元数据文件中关于结构化数据的理解是一致的,因此,在反序列化时可以将接收到的序列化数据转换为反序列化数据。
第四获取单元602,用于获取序列化的数据;该序列化数据可以是二进制数据,但不限于二进制数据。
反序列化单元603,用于根据获取的第二元数据描述文件,对获取的序列化的数据执行反序列化操作,其中,反序列化单元603中具体可以是对每个字段进行反序列化操作,直到所有字段都被反序列化成功,若有字段反序列化失败,则该方法结束。
因此,反序列化单元603可以具体包括:字段反序列化单元和第二判断单元;
其中,字段反序列化单元,用于对序列化的数据中每一个字段进行反序列化;第二判断单元,用于依次判断每个字段反序列化是否成功,若成功则继续执行对下一个字段的反序列化操作,若失败,则结束。
需要说明的是,本发明实施例中说明的第一元数据描述文件和第二元数据描述文件可以是采用相同的协议的元数据描述,或者,也可以理解为兼容的协议的元数据描述。
由于序列化和反序列化过程利用到元数据描述文件中协议描述字段的顺序,因此,在进行协议变更或者升级的过程中,可以要求:新加(高版本)字段域自增版本号并(最好)添加到消息尾部;或者,已有字段域不能删除或者更改类型ID并不能调整相对顺序。
通过本发明实施例提供的一种反序列化装置,通过获取第而元数据描述文件,根据第二元数据描述文件,对获取的序列化数据进行反序列化;简化了通信设备在反序列化过程中确定字段带来的逻辑处理开销。
如图7所示,本发明实施例提供了一种通信系统,该通信系统包括序列化装置701,和反序列化装置702。
其中,序列化装置701,用于获取第一元数据描述文件;获取结构化数据;根据获取的第一元数据描述文件,对获取的结构化数据进行序列化;
反序列化装置702,用于获取第二元数据描述文件;获取序列化的数据;根据获取的第二元数据描述文件,对获取的序列化的数据执行反序列化操作。
上述第一元数据描述文件和第二元数据描述文件可以是采用相同的协议的元数据描述,或者,也可以理解为兼容的协议的元数据描述。
由于序列化和反序列化过程利用到元数据描述文件中协议描述字段的顺序,因此,在进行协议变更或者升级的过程中,可以要求:新加(高版本)字段域自增版本号并(最好)添加到消息尾部;或者,已有字段域不能删除或者更改类型ID并不能调整相对顺序。
通过本发明实施例提供的一种通信系统,序列化装置通过获取第一元数据描述文件,根据第一元数据描述文件,对获取的结构化数据进行序列化;使得生成的序列化数据中减少了除纯粹数据外的附加数据,如对数据类型描述等描述数据的内容,降低了数据传输时消耗的资源,提高了数据传输的效率,另一方面,可以简化了通信对端在反序列化过程中确定字段带来的逻辑处理开销。
并且反序列化装置通过获取第二元数据描述文件,根据第二元数据描述文件,对获取的序列化数据进行反序列化;简化了通信设备在反序列化过程中确定字段带来的逻辑处理开销。
请参考图8,其示出了本发明实施例所涉及的序列化装置,该序列化装置可以用于实施上述实施例中提供的方法。具体来讲:
序列化装置可以包括有一个或一个以上计算机可读存储介质的存储器120、输入单元130、输出单元140包括有一个或者一个以上处理核心的处理器180、以及电源190等部件。本领域技术人员可以理解,图5中示出的序列化装置结构并不构成对序列化装置的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
存储器120可用于存储软件程序以及模块,处理器180通过运行存储在存储器120的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器120可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据序列化装置的使用所创建的数据等。此外,存储器120可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器120还可以包括存储器控制器,以提供处理器180和输入单元130对存储器120的访问。
输入单元130可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。
处理器180是序列化装置的控制中心,利用各种接口和线路连接各个部分,通过运行或执行存储在存储器120内的软件程序和/或模块,以及调用存储在存储器120内的数据,执行终端1200的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器180可包括一个或多个处理核心。
序列化装置还包括给各个部件供电的电源190(比如电池),优选的,电源可以通过电源管理系统与处理器180逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源190还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
具体在本实施例中,
输入单元130,用于接收结构化数据;其中,结构化数据可以理解为存储在数据库里,可以用二维表结构来逻辑表达实现的数据。
处理单元180,用于获取第一元数据描述文件,根据获取的第一元数据描述文件,对获取的结构化数据进行序列化;
其中,在第一元数据描述文件可以通过XML以高可读性方式描述结构化对象。其中对结构中每个成员字段的描述中可以包括顺序,字段类型,或者字段版本号(支持协议向后兼容性)等其中任意组合。这里对第一元数据描述文件的说明仅是便于理解的说明,并非对本发明实施例的限制。
其中,由于第一元数据描述文件中记录有关结构化数据的信息的描述,设备根据第一元数据描述文件和结构化数据,将其序列化。例如,第一元数据描述文件包括:描述结构化数据中包括有浮点型(float)数据和字符串型(string)数据两类,且结构化数据的顺序是先对浮点型数据进行序列化,再对字符串型数据进行序列化,在元数据描述文件中还可以包括对结构化数据的其它描述信息,此处不能穷举,不应该理解为对本发明实施例的限制。
优选的,在处理单元180中生成序列化的数据的字段中包括数据长度(Length)和数据值(Value),或者仅包括数据值。
通过本发明实施例提供的一种序列化装置,通过获取第一元数据描述文件,根据第一元数据描述文件,对获取的结构化数据进行序列化;使得生成的序列化数据中减少了除纯粹数据外的附加数据,如对数据类型描述等描述数据的内容,降低了数据传输时消耗的资源,提高了数据传输的效率,另一方面,可以简化了通信对端在反序列化过程中确定字段带来的逻辑处理开销。
优选的,处理单元180,还用于:对结构化数据中每一个字段进行序列化;依次判断每个字段序列化是否成功,若成功则继续执行对下一个字段的序列化操作,若失败,则结束。
请参考图2,其示出了本发明实施例所涉及的反序列化装置,该反序列化装置可以用于实施上述实施例中提供的方法。具体来讲:
序列化装置可以包括有一个或一个以上计算机可读存储介质的存储器220、输入单元230、输出单元240包括有一个或者一个以上处理核心的处理器280、以及电源290等部件。本领域技术人员可以理解,图6中示出的反序列化装置结构并不构成对反序列化装置的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
存储器220可用于存储软件程序以及模块,处理器280通过运行存储在存储器220的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器220可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据反序列化装置的使用所创建的数据等。此外,存储器220可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器220还可以包括存储器控制器,以提供处理器280和输入单元230对存储器220的访问。
输入单元230可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。
处理器280是反序列化装置的控制中心,利用各种接口和线路连接各个部分,通过运行或执行存储在存储器220内的软件程序和/或模块,以及调用存储在存储器220内的数据。可选的,处理器280可包括一个或多个处理核心。
反序列化装置还包括给各个部件供电的电源290(比如电池),优选的,电源可以通过电源管理系统与处理器280逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源290还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
具体在本实施例中,
输入单元230,用于接收序列化的数据;该序列化数据可以是二进制数据,但不限于二进制数据。
处理单元280,用于获取第二元数据描述文件;根据获取的第二元数据描述文件,对获取的序列化的数据执行反序列化操作,
其中,第二元数据描述文件可以记录不同数据类型的顺序,或者字段域ID等。
优选的,处理单元280,具体用于对序列化的数据中每一个字段进行反序列化;依次判断每个字段反序列化是否成功,若成功则继续执行对下一个字段的反序列化操作,若失败,则结束。
需要说明的是,本发明实施例中说明的第一元数据描述文件和第二元数据描述文件可以是采用相同的协议的元数据描述,或者,也可以理解为兼容的协议的元数据描述。
由于序列化和反序列化过程利用到元数据描述文件中协议描述字段的顺序,因此,在进行协议变更或者升级的过程中,可以要求:新加(高版本)字段域自增版本号并(最好)添加到消息尾部;或者,已有字段域不能删除或者更改类型ID并不能调整相对顺序。
通过本发明实施例提供的一种反序列化装置,通过获取第而元数据描述文件,根据第二元数据描述文件,对获取的序列化数据进行反序列化;简化了通信设备在反序列化过程中确定字段带来的逻辑处理开销。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上对本发明所提供的一种结构化数据的序列化、反序列化方法、装置和系统进行了详细介绍,对于本领域的一般技术人员,依据本发明实施例的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (9)
1.一种结构化数据的序列化方法,其特征在于,所示方法包括:
获取第一元数据描述文件;
获取结构化数据;
根据获取的所述第一元数据描述文件,对所述结构化数据进行序列化;
所述根据获取的所述第一元数据描述文件,对所述结构化数据进行序列化,具体包括:
根据第一元数据描述文件中的数据类型,将结构化数据序列化为包括数据长度(Length)和数据值(Value),或者仅包括数据值(Value)的序列化数据;
所述根据获取的所述第一元数据描述文件,对所述结构化数据进行序列化,具体包括:
根据所述第一元数据描述文件将结构化数据中字段顺序的执行序列化;
依次判断每个字段序列化是否成功;如果成功,则继续执行对下一个字段的序列化操作,如果失败,则结束。
2.根据权利要求1所述的方法,其特征在于,所述获取第一元数据描述文件,具体包括:
根据预置的第一元数据描述文件,从而获取所述第一元数据描述文件;
或者,根据所述结构化数据,获取所述第一元数据描述文件。
3.一种反序列化方法,其特征在于,所述方法包括:
获取第二元数据描述文件,所述第二元数据描述文件与如权利要求1至2中任一所述的第一元数据描述文件采用相同的协议的元数据描述,或者,为兼容的协议的元数据描述;
获取序列化的数据;
根据获取的所述第二元数据描述文件,对获取的所述序列化的数据执行反序列化操作;
所述根据获取的所述第二元数据描述文件,对获取的所述序列化的数据执行反序列化操作,具体包括:
根据所述第二元数据描述文件,对所述序列化数据中每一个字段进行反序列化;
依次判断每个字段反序列化是否成功,若成功,则继续执行对下一个字段的反序列化操作,若失败,则结束。
4.根据权利要求3所述的方法,其特征在于,所述第二元数据描述文件至少包括:数据的类型描述。
5.一种结构化数据的序列化装置,其特征在于,所述装置包括:第一获取单元,第二获取单元,和序列化单元,
所述第一获取单元,用于获取第一元数据描述文件;
所述第二获取单元,用于获取结构化数据;
所述序列化单元,用于根据获取的所述第一元数据描述文件,对所述结构化数据进行序列化;
所述序列化单元具体包括:根据第一元数据描述文件中的数据类型,将结构化数据序列化为包括数据长度(Length)和数据值(Value),或者仅包括数据值(Value)的序列化数据;
所述序列化单元,具体包括:字段序列化单元和第一判断单元;
所述字段序列化单元,用于根据所述第一元数据描述文件将结构化数据中字段顺序的执行序列化;
所述第一判断单元,用于依次判断每个字段序列化是否成功;如果成功,则通知所述字段序列化单元继续执行对下一个字段的序列化操作,如果失败,则结束。
6.根据权利要求5所述的装置,其特征在于,所述第一获取单元,具体用于:
根据预置的第一元数据描述文件,从而获取所述第一元数据描述文件;
或者,根据所述结构化数据,获取所述第一元数据描述文件。
7.一种反序列化装置,其特征在于,所述装置包括:第三获取单元,第四获取单元,和反序列化单元,
所述第三获取单元,用于获取第二元数据描述文件,所述第二元数据描述文件与如权利要求5至6中任一所述的第一元数据描述文件采用相同的协议的元数据描述,或者,为兼容的协议的元数据描述;
所述第四获取单元,用于获取序列化的数据;
所述反序列化单元,用于根据获取的所述第二元数据描述文件,对获取的所述序列化的数据执行反序列化操作;
所述反序列化单元具体包括:字段反序列化单元和第二判断单元,
所述字段反序列化单元,用于根据所述第二元数据描述文件,对所述序列化数据中每一个字段进行反序列化;
所述第二判断单元,用于依次判断每个字段反序列化是否成功,若成功,则通知所述字段反序列化单元继续执行对下一个字段的反序列化操作,若失败,则结束。
8.根据权利要求7所述的装置,其特征在于,所述第二元数据描述文件至少包括:数据的类型描述。
9.一种通信系统,其特征在于,包括:序列化装置和反序列化装置;
所述序列化装置,用于获取第一元数据描述文件;获取结构化数据;根据获取的所述第一元数据描述文件,对所述结构化数据进行序列化,所述序列化装置根据获取的所述第一元数据描述文件,对所述结构化数据进行序列化具体包括:根据第一元数据描述文件中的数据类型,将结构化数据序列化为包括数据长度(Length)和数据值(Value),或者仅包括数据值(Value)的序列化数据;
所述序列化装置,具体用于根据所述第一元数据描述文件将结构化数据中字段顺序的执行序列化;依次判断每个字段序列化是否成功;如果成功,则通知所述字段序列化单元继续执行对下一个字段的序列化操作,如果失败,则结束;
所述反序列化装置,用于获取第二元数据描述文件;获取序列化的数据;根据获取的所述第二元数据描述文件,对获取的所述序列化的数据执行反序列化操作;
所述第一元数据描述文件与所述第二元数据描述文件采用相同的协议的元数据描述,或者,采用兼容的协议的元数据描述;
所述反序列化装置具体用于根据所述第二元数据描述文件,对所述序列化数据中每一个字段进行反序列化;依次判断每个字段反序列化是否成功,若成功,则通知所述字段反序列化单元继续执行对下一个字段的反序列化操作,若失败,则结束。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310163947.XA CN104077335B (zh) | 2013-05-07 | 2013-05-07 | 一种结构化数据的序列化、反序列化方法、装置和系统 |
PCT/CN2013/089937 WO2014180143A1 (en) | 2013-05-07 | 2013-12-19 | Methods and systems for data serialization and deserialization |
US14/261,655 US20150178292A1 (en) | 2013-05-07 | 2014-04-25 | Methods and systems for data serialization and deserialization |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310163947.XA CN104077335B (zh) | 2013-05-07 | 2013-05-07 | 一种结构化数据的序列化、反序列化方法、装置和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104077335A CN104077335A (zh) | 2014-10-01 |
CN104077335B true CN104077335B (zh) | 2017-05-03 |
Family
ID=51598594
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310163947.XA Active CN104077335B (zh) | 2013-05-07 | 2013-05-07 | 一种结构化数据的序列化、反序列化方法、装置和系统 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20150178292A1 (zh) |
CN (1) | CN104077335B (zh) |
WO (1) | WO2014180143A1 (zh) |
Families Citing this family (35)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106570410B (zh) * | 2015-10-09 | 2020-05-12 | 腾讯科技(深圳)有限公司 | 一种数据的加密方法、解密方法、装置和系统 |
CN106815238B (zh) * | 2015-11-30 | 2020-10-20 | 阿里巴巴集团控股有限公司 | 一种结构化数据的序列化、反序列化方法及装置 |
CN105573956B (zh) * | 2015-12-10 | 2019-06-21 | 盛趣信息技术(上海)有限公司 | 序列化方法以及基于序列化的网络通信方法 |
CN105760534B (zh) * | 2016-03-10 | 2019-03-05 | 上海晶赞科技发展有限公司 | 自定义的可序列化的数据结构、hadoop集群、服务器及其应用方法 |
CN107180017B (zh) * | 2016-03-11 | 2021-05-28 | 阿里巴巴集团控股有限公司 | 一种样本序列化方法和装置 |
CN106055620A (zh) * | 2016-05-26 | 2016-10-26 | 江苏国泰新点软件有限公司 | 序列化的方法及装置 |
CN106326377A (zh) * | 2016-08-15 | 2017-01-11 | 东软集团股份有限公司 | 序列化方法、反序列化方法、装置和系统 |
CN107818118B (zh) * | 2016-09-14 | 2019-04-30 | 北京百度网讯科技有限公司 | 数据存储方法和装置 |
CN108427691B (zh) * | 2017-02-15 | 2021-11-16 | 腾讯科技(深圳)有限公司 | 网络数据传输方法、装置和计算机设备 |
CN106899307B (zh) * | 2017-03-03 | 2020-10-16 | 上海东软医疗科技有限公司 | 一种数据压缩方法、数据解压缩方法及装置 |
US11256743B2 (en) * | 2017-03-30 | 2022-02-22 | Microsoft Technology Licensing, Llc | Intermixing literal text and formulas in workflow steps |
CN107463668B (zh) * | 2017-08-02 | 2019-03-26 | 湖南新航动力信息科技有限公司 | 序列化和反序列化的方法及装置、计算机设备及存储介质 |
CN107948181A (zh) * | 2017-12-06 | 2018-04-20 | 吉旗(成都)科技有限公司 | 一种可扩展的数据字描述结构方法 |
CN108153896B (zh) * | 2018-01-08 | 2020-07-10 | 第四范式(北京)技术有限公司 | 针对输入数据、输出数据的处理方法及装置 |
CN108595209A (zh) * | 2018-03-21 | 2018-09-28 | 百度在线网络技术(北京)有限公司 | 数据存储和读取方法、装置、系统及存储介质 |
CN108540477A (zh) * | 2018-04-13 | 2018-09-14 | 腾讯科技(成都)有限公司 | 数据通信的方法及相关设备 |
CN108829646A (zh) * | 2018-05-03 | 2018-11-16 | 百度在线网络技术(北京)有限公司 | 数据存储及解析方法、装置、系统及存储介质 |
CN108810000B (zh) * | 2018-06-20 | 2021-07-30 | 北京经纬恒润科技股份有限公司 | 一种生成序列化和反序列化api的方法及装置 |
CN108876628A (zh) * | 2018-06-28 | 2018-11-23 | 深圳数字动能信息技术有限公司 | 金融量化分析数据传输方法 |
CN110855727A (zh) * | 2018-08-21 | 2020-02-28 | 苏州迈科网络安全技术股份有限公司 | 基于字节序列化和反序列化的数据对象的传输系统和方法 |
CN109298866A (zh) * | 2018-09-26 | 2019-02-01 | 杭州米加科技股份有限公司 | 基于c语言的tlv格式协议快速解析方法 |
CN109636884A (zh) * | 2018-10-25 | 2019-04-16 | 阿里巴巴集团控股有限公司 | 动画处理方法、装置及设备 |
US10582019B1 (en) | 2019-07-12 | 2020-03-03 | Coupang Corp. | Systems and methods for interfacing networks using a unified communication scheme |
CN110597500B (zh) * | 2019-07-26 | 2023-04-18 | 北京柠檬微趣科技股份有限公司 | 消息结构的序列化和反序列化方法及装置 |
CN110609990B (zh) * | 2019-09-06 | 2023-02-07 | 趋新科技(北京)有限公司 | 一种基于人工智能的结构化数据文本编辑方法及系统 |
CN110830164A (zh) * | 2019-10-22 | 2020-02-21 | 武汉理工光科股份有限公司 | 一种用于物联网设备通信的数据序列化方法 |
CN110932916B (zh) * | 2019-12-20 | 2022-11-15 | 惠州市德赛西威汽车电子股份有限公司 | 一种改进的oma dm协议数据编码方法 |
CN111240761B (zh) * | 2020-01-08 | 2023-05-30 | 郑州阿帕斯数云信息科技有限公司 | 一种配置文件的加载方法和装置 |
CN111478898B (zh) * | 2020-04-03 | 2022-03-11 | 爱瑟福信息科技(上海)有限公司 | Someip协议通信数据的序列化和反序列化方法及其系统 |
CN111935065A (zh) * | 2020-05-30 | 2020-11-13 | 中国兵器科学研究院 | 基于多视窗系统的数据通信方法及相关装置 |
US11615109B1 (en) | 2021-01-05 | 2023-03-28 | Pinterest, Inc. | Efficient deserialization from standardized data files |
CN113204683B (zh) * | 2021-06-04 | 2022-07-01 | 腾讯科技(成都)有限公司 | 信息重构方法和装置、存储介质及电子设备 |
CN113312344B (zh) * | 2021-07-28 | 2022-01-04 | 阿里云计算有限公司 | 数据序列化、反序列化方法、设备、系统、介质及产品 |
CN114679493B (zh) * | 2022-03-23 | 2023-07-28 | 北京睿芯高通量科技有限公司 | 一种安全的序列化和反序列化传输数据的方法 |
CN116932615A (zh) * | 2023-09-19 | 2023-10-24 | 北京城建智控科技股份有限公司 | 自适应协议的数据序列化方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101789013A (zh) * | 2010-02-04 | 2010-07-28 | 浪潮集团山东通用软件有限公司 | 一种用于描述关系数据的增强型csv文件格式 |
CN101876990A (zh) * | 2009-10-27 | 2010-11-03 | 用友软件股份有限公司 | 传递树形结构对象的方法 |
CN101477532B (zh) * | 2008-12-23 | 2011-09-28 | 北京畅游天下网络技术有限公司 | 实现数据存储、读取的方法、装置及系统 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6920461B2 (en) * | 2001-07-10 | 2005-07-19 | Microsoft Corp. | Application program interface for network software platform |
US7467374B2 (en) * | 2003-11-05 | 2008-12-16 | Microsoft Corporation | Serialization for structured tracing in managed code |
US20050114405A1 (en) * | 2003-11-25 | 2005-05-26 | Microsoft Corporation | Flat file processing method and system |
US7627814B1 (en) * | 2004-01-14 | 2009-12-01 | Microsoft Corporation | Hierarchical bit stream markup compilation and rendering |
US20050234986A1 (en) * | 2004-04-09 | 2005-10-20 | Microsoft Corporation | Systems and methods for fragment-based serialization |
US7441185B2 (en) * | 2005-01-25 | 2008-10-21 | Microsoft Corporation | Method and system for binary serialization of documents |
US7774746B2 (en) * | 2006-04-19 | 2010-08-10 | Apple, Inc. | Generating a format translator |
US20130117326A1 (en) * | 2011-11-08 | 2013-05-09 | Microsoft Corporation | External serialization and deserialization |
-
2013
- 2013-05-07 CN CN201310163947.XA patent/CN104077335B/zh active Active
- 2013-12-19 WO PCT/CN2013/089937 patent/WO2014180143A1/en active Application Filing
-
2014
- 2014-04-25 US US14/261,655 patent/US20150178292A1/en not_active Abandoned
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101477532B (zh) * | 2008-12-23 | 2011-09-28 | 北京畅游天下网络技术有限公司 | 实现数据存储、读取的方法、装置及系统 |
CN101876990A (zh) * | 2009-10-27 | 2010-11-03 | 用友软件股份有限公司 | 传递树形结构对象的方法 |
CN101789013A (zh) * | 2010-02-04 | 2010-07-28 | 浪潮集团山东通用软件有限公司 | 一种用于描述关系数据的增强型csv文件格式 |
Also Published As
Publication number | Publication date |
---|---|
CN104077335A (zh) | 2014-10-01 |
WO2014180143A1 (en) | 2014-11-13 |
US20150178292A1 (en) | 2015-06-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104077335B (zh) | 一种结构化数据的序列化、反序列化方法、装置和系统 | |
TW201833903A (zh) | 對話生成方法、裝置及儲存介質 | |
Acampora et al. | A hybrid evolutionary approach for solving the ontology alignment problem | |
CN103593333B (zh) | 一种电子书文档的处理方法、终端及电子设备 | |
Kaur et al. | An evaluation of protocol buffer | |
TW201246071A (en) | Unrolling quantifications to control in-degree and/or out degree of automation | |
CN109933331A (zh) | 一种客户端服务器间数据转换方法及相关组件 | |
WO2024055571A1 (zh) | 一种namespace设置方法、装置及可读存储介质 | |
CN102929646A (zh) | 应用程序生成方法及装置 | |
CN111124379A (zh) | 页面生成方法、装置、电子设备及存储介质 | |
CN109857389A (zh) | 模型数据生成方法、装置、计算机设备及存储介质 | |
WO2022142106A1 (zh) | 文本分析方法、装置、电子设备及可读存储介质 | |
CN106341497B (zh) | 数字id生成方法及装置 | |
CN103309676B (zh) | 用于海洋数值模拟ROMS的Web服务封装方法以及系统 | |
Mohamed et al. | Enhancing mapreduce using mpi and an optimized data exchange policy | |
CN109828759A (zh) | 代码编译方法、装置、计算机装置及存储介质 | |
CN105573763A (zh) | 一种支持rtos的嵌入式系统建模方法 | |
CN102930581A (zh) | 对数据帧动画的通用表示 | |
CN113704420A (zh) | 文本中的角色识别方法、装置、电子设备及存储介质 | |
CN107423291A (zh) | 一种数据翻译方法以及客户端设备 | |
CN112755534B (zh) | 一种数据处理方法、装置和存储介质 | |
CN105426183A (zh) | 一种表单验证方法 | |
CN100562008C (zh) | 消息处理系统及其处理方法 | |
Chang et al. | XML-based reusable component repository for embedded software | |
CN112084391B (zh) | 依赖包信息的获取方法、装置、设备及计算机介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |