APP为什么用JSON协议与服务端交互:序列化相关知识

在设计或重构系统的过程中,特别是在设计分布式、大数据量系统里面,序列化选型是一个重要环节,因为序列化协议影响系统的通用性、健壮性、安全性,是否易于调试、是否便于扩展。

 

序列化分理论和实践部分,理论部分描述只序列化是什么、要做什么,不关心实现(因为不考虑具体实现,所以自然不会考虑优缺点、应用场景);实践部分描述如何完成序列化操作,对象用什么方法表示,即把序列化从理论世界带进现实世界。序列化理论部分相当于是设计,实践部分相当于实现。

理论

序列化理论包含的三个方面

  1. 序列化定义;

  2. 序列化在通信协议中的地位;

  3. 序列化组件

1. 序列化问题是怎么产生的(序列化的定义)

互联网的发展产生了机器之间互相通讯的需求,机器之间互相通讯需要约定通讯协议,通信协议又要考虑数据如何表示、如何传输等问题。序列化就是通信协议里与数据的表示相关的那一部分协议。OSI七层协议模型中的展现层(Presentation Layer)的主要功能是把对象转换成一段连续的二进制串,或把二进制串转换成对象–这就是序列化和反序列化。

所以,序列化和反序列化的定义就是:

  • 序列化: 将数据结构或对象转换成二进制串

  • 反序列化:将在序列化过程中所生成的二进制串转换成数据结构或对象

注:不一定非要转换成二进制,只要是能传输到通信另一端都可以,例如utf-8字符串。

2. 序列化在通信协议中的地位

  1. OSI七层协议模型,序列化位于展示层(Presentation Layer)

  2. 在TCP/IP协议中,序列化位于应用层。

3. 序列化和反序列化的组件

完整的序列化协议包含以下组件:

  1. IDL文件(Interface description language)。参与通讯的各方需要对通讯的内容做相关约定。为了与语言和平台无关,这个约定需要采用与编程语言、平台无关的语言来进行描述。这种语言被称为接口描述语言(IDL),采用IDL撰写的协议约定称为IDL文件。

  2. IDL Compiler:IDL文件中的约定需要一个编译器,将IDL文件转换成各编程语言的动态库。

  3. Stub/Skeleton Lib:负责序列化和反序列化工作的代码。Stub是一段部署在客户端的代码,一方面接收应用层的参数,并对其序列化后通过底层协议栈发送到服务端;另一方面接收服务端序列化后的结果数据,反序列化后交给应用层;Skeleton部署在服务端,其功能与Stub相反,从传输层接收序列化参数,反序列化后交给服务端应用层,并将应用层的执行结果序列化后最终传送给客户端。

序列化组件之间的交互关系:

​序列化组件之间的交互

序列化组件的概念与数据库的相关概念类似:


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值