序列化:Serialization称为编码,将对象序列化为字节数组,用于网络传输、数据持久化或者其他用途
反序列化:Deserialization称为解码,把从网络,磁盘等读取的字节还原成原始对象(通常是原始对象的副本)
一.概念澄清
1.序列化和通信框架的关系
序列化与通信框架不是强耦合关系,通信框架提供的编解码框架可以非常方便的支持用户通过扩展实现自定义的序列化格式。用户也可以在应用陈旭以及其他位置实现对象的序列化和反序列化。通信框架的编解码接口作为可选插件。
2.序列化和通信协议的关系
序列化和通信协议是解耦的,同一种通信协议可能由多种序列化方式承载,同一种序列化方式也可以用在不同的协议里。
比如:HTTP协议,承载消息体可以是XML、JSON等文本类的协议,也可以是图片等二进制流媒体协议。
3.是否需要支持多种序列化方式
序列化分为两类:
- 文本类序列化,比如:XML,JSON等
- 二进制类序列化,比如:PB/Thrift等
序列化将上述格式的内容:序列化成字节数组。反序列化:将字节数组反序列化成上述格式的内容。
二.功能设计
设计序列化/反序列化框架的时候,需要从功能、跨语言支持、兼容性、性能等多个角度综合考量。
网友评论