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。