pb xml json

171 阅读2分钟

1. 引入

6.14晚和leader谈话的时候他提到RPC技术 并举例子提到了三种序列化的技术

项目组综合衡量了三种序列化的方式之后选择了pb的方式 相交于更灵活和易于理解的xml json格式 项目更看重pb的效率

在之前的学习和工作时接触到过xml和json格式 是web项目中最常用的两种序列化方式

  • json作为前后端数据传输的数据格式 或者中间信息保存时 之前学redis的时候session数据可视化的结构是json
  • xml作为配置文件结合DOM技术和反射技术来构建框架
  • 但是pb不很了解

2. 参考资料

(19条消息) ProtoBuf的介绍以及在Java中使用protobuf将对象进行序列化与反序列化_霸道流氓气质的博客-CSDN博客_java protobuf序列化和反序列化

一文搞懂XML、Json、Protobuf序列化协议_路上的追梦人的博客-CSDN博客_序列化协议

3.技术简介

用套接字在网络中传输数据时应该是语言无关性的 当然没办法传输一个对象 无论是java语言还是C语言编写的对象

(除了网络数据传输 还有将数据保存在数据库或者文件中时 需要进行序列化 )

因此需要借助序列化协议

  • 序列化:将对象转换为字节序列的过程称为对象的序列化;
  • 反序列化:将字节序列恢复为对象的过程称为对象的反序列化;

4.序列化结果对比

     

5. 三类方法对比

xml :

优点

(1)文本结构存储;

缺点

(1)xml格式存储的数据比其它的占用更多的空间,因为它除了保存原始数据,还需要保存元数据的描述;

(2)格式转换问题,比如给定一个doc做数据交互,需要先确定doc怎么编码,才可以用xml描述并还原;

优点

(1)二进制结构存储,效率高,序列化体积比Json和xml更小、更加灵活;

(2)格式规范,支持RPC;

(3)易于使用,开发人员可以按照一定的语法定义结构化的消息格式,然后送给命令行工具,工具将自动生成相关的类,可以支持JAVA、C++、Go等语言环境。通过这类类包含在项目当中,可以很轻松的调用相关方法来完成业务消息的序列化与反序列工作

缺点

(1)可读性不高;

ProtocolBuffer拥有多项比XML更高级的串行化结构数据的特性,ProtocolBuffer:

· 更简单

· 小3-10倍

· 快20-100倍

· 更少的歧义

· 可以方便的生成数据存取类