谷歌协议缓冲区VS JSON VS XML

我想知道的优点和缺点

  • Google协议缓冲区
  • JSON
  • XML

我想为两个应用程序实现一个通用框架,一个用Perl,另一个用Java。 所以,想创build可以被Perl和Java两种技术使用的通用服务。

两者都是networking应用程序。

请分享我对此的宝贵意见和build议。 我在谷歌上看到很多链接,但都有不同的看法。

JSON

  • 人类可读/可编辑
  • 可以在不知道架构的情况下进行parsing
  • 出色的浏览器支持
  • 不如XML详细

XML

  • 人类可读/可编辑
  • 可以在不知道架构的情况下进行parsing
  • SOAP等标准
  • 良好的工具支持(xsd,xslt,sax,dom等)
  • 相当详细

的Protobuf

  • 非常密集的数据(小输出)
  • 在不知道模式的情况下难以稳健地进行解码(数据格式在内部是不明确的,需要模式来澄清)
  • 处理速度非常快
  • 不打算用于人眼(密集二进制)

在大多数平台上都有很好的支持。

就个人而言,我现在很less使用XML。 如果消费者是浏览器或公共API,我倾向于使用json。 对于内部API,我倾向于使用protobuf来提高性能。 提供公共API(通过头文件或单独的端点)都可以。