序列化相关

2020-04-09  本文已影响0人  瑜小贤

定义及相关概念

  1. 由于在系统底层,数据的传输形式是简单的字节序列形式传递,即在底层,系统不认识对象,只认识字节序列,而为了达到进程通讯的目的,需要先将数据序列化,而序列化就是将对象转化为字节序列的过程。相反的,当字节序列被运到相应的进程的时候,进程为了识别这些数据,就要将其反序列化,即把字节序列转化为对象
  2. 无论是在进程间通信,本地数据存储亦或是网络数据传输都离不开序列化的支持。而针对不同场景选择合适的序列化方案对于应用的性能有着极大的影响。
  3. 从广义上讲,数据序列化就是将数据结构或者是对象转换成我们可以存储或传输数据格式的一个过程,在序列化过程中数据结构或对象将其状态信息写入到临时或者永久性的存储区中,而在对应的反序列化过程中,则可以说是生成的数据被还原成数据结构或对象的过程。
  4. 这样来说,数据序列化相当于是将我们原先的对象序列化概念做出了扩展,在对象序列化和反序列化中,我们熟知的有两种方法:
    (1)是Java语言中提供的Serializable接口
    (2)是Android提供的Parcelable接口。
    而在这里,因为我们对这个概念做出了扩展,因此也需要考虑几种专门针对数据结构进行序列化的方法,如现在那些开放API一般返回的数据都是JSON格式,又或者是我们Android原生的SQLite数据库来实现数据的本地存储,从广义上来说,这些都可以算作是数据的序列化。

目的

常见的序列化/反序列化协议

XML&SOAP

XML是一种常用的序列化和反序列化协议,具有跨机器,跨语言等优点
SOAP(Simple Object Access Protocol)是一种被广泛应用的,基于XML为序列化和反序列化协议的结构化消息传递协议。

JSON(Javascript Object Notation)

JSON起源于弱类型语言Javascript,它的产生来自于一种称之为“Associative array”的概念,起本质就是采用“Attribute-value”的方式来描述对象。实际上在Javascript和PHP等弱类型语言中,类的描述方式就是Associative array。JSON的如下优点,使得它成为最广泛使用的序列化协议之一。

Protobuf

Protobuf具备了优秀的序列化协议所需的众多典型特征

上一篇 下一篇

猜你喜欢

热点阅读