xml json protobuf

 

本文为原创,转载请注明:http://www.cnblogs.com/gistao/

 

Background

xml,json,protobuf都是格式化手段,喜欢哪个,会用哪个,该用哪个,用哪个?

随便提一下facebook的thrift,也提供了序列化/反序列化功能,支持语言众多,rpc场景被大量采用,但性能相比protobuf还是弱一些,这是google的benchmarking。

XML

  • 可读可编辑。
  • 格式描述非常详细/冗余。
  • 不需要schema也可以解析。
  • 使用者众多,支持工具也众多,完全不用担心成孤岛。

Json

  • 可读可编辑,但是较长的json没有xml的一目了然。
  • 相比较xml,json更简介,解析也更快
  • 也不需要schema就可以解析。
  • 不需要担心工具问题,应用较广。

Protobuf

  • 二进制格式,所以没有可读性。不过google开发有wireshark插件以便定位问题。
  • 解析需要schema(.proto)。
  • 速度异常的快,google的对外说法是:相比xml,are 20 to 100 times faster。
  • 使用非常简单,可自动生成访问数据的类。
  • 仅支持c++,java,python。不过很多语言自己写了实现,比如php-protobuf

Final

个人而言,如果我的服务对象是浏览器,或者我提供了公用api,我会使用json。而服务内部之间的api会使用protobuf。

原文地址:https://www.cnblogs.com/gistao/p/4369216.html