这几天接触到google.protobuf的东西,这类知识有欠缺,补一下。
序列化,将对象的状态信息转换为可以存储或传输的形式的过程,反之称为反序列化。
序列化的目的不是为了加密,而是为了跨平台传输!
序列化 和 反序列化主要用于解决在跨平台和跨语言的情况下,模块之间的交互调用,但其本质是为了解决数据传输的问题。
序列化,要有原始数据,通过某些方式,转换成另一种形式,目的是网络传输或磁盘拷贝。
平台或语言不同,某些数据类型占用的内存大小不一样。
数据对齐
序列化整体过程:
发送端:原始数据 =》序列化(编码) =》特殊格式的字符串, 发送这个字符串
接收端:接收数据,将接收的数据进行反序列化(解码)=》原始数据,对原始数据进行处理
常用的序列化方式:
1. XML 类似于html
<?xml version="1.0" encodeing="utf-8"?>
<Library>
<Type name="小说">
。。。
</Type>
</Library>
标签自定义
2. Json 采集键值对的方式来描述对象。解析速度比较快,比xml快
Json是一种数据格式,与平台语言无关
3. Protocl Buffer
4. ASN.1 抽象语法标记
5.boost 序列化的类。