1.1.什么是序列化
序列化从本质上来说就是将对象序列化为二进制形式,一般也将序列化称为编码主要用于网络传输、数据持久化等较多方面,与之相对应的是反序列化.
反序列化则是将从网络、磁盘等读取的字节数组还原成原始对象,以便后续业务的进行,一般也将反序列化称为解码(Decode),主要用于网络传输对象的解码,以便完成远程调用。
1.2.为什么要进行序列化
当两个进程在进行远程通信时,彼此可以发送各种类型的数据。无论是何种类型的数据,都会以二进制序列的形式在网络上传送。发送方需把这个对象转换为字节序列,才能在网络上传送;接收方则需把字节序列再恢复为对象。 把对象转换为字节序列的过程称为对象的序列化。序列化最终的目的是为了对象可以跨平台存储和进行网络传输。把字节序列恢复为对象的过程称为对象的反序列化
1.3嵌入式中常使用的序列化格式
1.3.1.JSON格式
Json是一种轻量级的数据交换格式,可以被使用在多种编程语言中,用于前后端之间的数据传输、存储和交换数据。可以说是“用更少的编码,有更快的处理速度”,所以深受广大程序员的喜爱。JSON 格式的数据是由键值对组成的,其中键值对之间使用逗号分隔。在 JSON 中,键和值都必须使用双引号引起来。
举个简单的例子
1.3.2.XML格式
XML是一种常用的序列化和反序列化协议,具有跨机器,跨语言等优点。 XML历史悠久,其1.0版本早在1998年就形成标准,并被广泛使用至今。
XML的最初产生目标是对互联网文档进行标记,所以它的设计理念中就包含了对于人和机器都具备可读性。 但是,当这种标记文档的设计被用来序列化对象的时候,就显得冗长而复杂。 XML本质上是一种描述语言,并且具有自我描述的属性,所以XML自身就被用于XML序列化的IDL。
1.4.总结
序列化的含义是:在网络传输的时候可以将应用层的数据结构或对象转化为对应的序列化协议的格式。
网络传输序列化的过程:序列化协议的定义是存储在IDL文件中,然后通过Stub/Skeleton进行转换为对应的引用程序的数据类型。如JSON 格式的化 就可以转换为 C/C++ 使用的集中序列化协议,其中Json是我们平时比较常使用的。因为相对于其他的序列化协议,它是易理解,兼容性好,传输的内容大小也小。