谷歌协议缓冲区与JSON与XML [关闭]


230

我想知道的优点和缺点

  • Google协议缓冲区
  • JSON格式
  • XML格式

我想为两个应用程序实现一个通用框架,一个在Perl中,第二个在Java中。因此,希望创建可以被两种技术(即Perl和Java)使用的通用服务。

两者都是Web应用程序。

请与我分享您对此的宝贵想法和建议。我在Google上看到了很多链接,但都有不同的看法。


9
您认为这里可能存在共识吗?
Barmar 2012年


1
非常感谢 但是想知道更多协议缓冲区和JSON。
Manoj Kathiriya 2012年

19
@Barmar不是关于共识,而是关于理性的选择,关于利弊,最好在元警察开始降低SO内容质量之前就问这个问题。
鲍里斯·特鲁霍夫

我曾经强烈反对任意解决这些问题。但是事实是,如果我正在咨询一个需要做出选择的项目,那么我想要的信息会比通常出现在SO帖子中的信息多得多。您在这里得到的任何建议都是轶事,是基于对您特定项目的要求和约束的几乎完全的无知。
迈克尔·凯

Answers:


279

杰森

  • 可读/可编辑
  • 可以在不事先了解架构的情况下进行解析
  • 出色的浏览器支持
  • 不如XML冗长

XML格式

  • 可读/可编辑
  • 可以在不事先了解架构的情况下进行解析
  • SOAP等标准
  • 良好的工具支持(xsd,xslt,sax,dom等)
  • 非常冗长

原虫

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

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

就个人而言,这些天我很少使用XML。如果使用者是浏览器或公共API,则倾向于使用json。对于内部API,我倾向于使用protobuf来提高性能。在公共API上同时提供两种功能(通过标头或单独的端点)也都可以正常工作。


8
XML需要更多的工作来进行解码,但与JSON相比,验证可能是一个主要优势。在处理包含在其中的支付交易之前,使用模式验证XML,可以为您增加一层健壮性。
CC。

11
XML还提供了一种叙事样式,其中文本与诸如在内的标签包含符交替出现<value>This is a <attention>narrative style</attention>. Tags could appear <exclamation /> in the middle of text</value>。与JSON和协议缓冲区相比,这是XML的独特功能。
保罗

3
@Marc Gravell:关于前向兼容性。我的印象是,这是protobuf的最大卖点之一?
Thomas Ahle 2014年

1
我的理解是Igor Ganapolsky,从概念上讲这几乎是不可能的,因为对probbuffs几乎没有必要解析,而json的处理阶段很长且不可避免。
Jules GM

3
只需提一下,您也可以将模式与JSON一起使用。
耶稣安古洛
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.