谷歌协议缓冲区vs json vs XML

Man*_*iya 226 xml json protocol-buffers data-serialization

我想知道它的优点和缺点

  • Google协议缓冲区
  • JSON
  • XML

我想为两个应用程序实现一个通用框架,一个在Perl中,另一个在Java中.因此,想要创建可以由两种技术使用的公共服务,即Perl和Java.

两者都是网络应用程序.

请与我分享您对此的宝贵意见和建议.我在谷歌上看过很多链接,但都有不同意见.

Mar*_*ell 273

JSON

  • 人类可读/可编辑
  • 可以在不事先知道模式的情况下解析
  • 出色的浏览器支持
  • 比XML更简洁

XML

  • 人类可读/可编辑
  • 可以在不事先知道模式的情况下解析
  • SOAP等标准
  • 良好的工具支持(xsd,xslt,sax,dom等)
  • 非常冗长

的Protobuf

  • 非常密集的数据(小输出)
  • 难以在不知道架构的情况下进行强大的解码(数据格式内部不明确,需要架构来澄清)
  • 处理速度非常快
  • 不适合人眼(密集二进制)

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

就个人而言,这些天我很少使用XML.如果消费者是浏览器或公共API,我倾向于使用json.对于内部API,我倾向于使用protobuf来提高性能.在公共API(通过标头或单独的端点)上提供这两种方法也很有效.

  • XML还允许叙述风格,其中文本与标签内容交替,例如`<value>这是<attention>叙事风格</ attention>.标签可以在文本</ value>`中间出现<exclamation />.与JSON和Protocol Buffers相比,这是XML的独特功能. (9认同)
  • XML是解码的更多工作,但验证可能是优于JSON的主要优势.在处理包含的付款交易之前,使用模式验证XML会为您提供额外的稳健性. (6认同)
  • @Marc Gravell:在前向兼容性方面如何.我的印象是,这是protobuf的一大卖点吗? (3认同)
  • 提一下,你也可以使用带有JSON的模式. (3认同)