【问题标题】:google protocol buffers vs json vs XML [closed]谷歌协议缓冲区 vs json vs XML [关闭]
【发布时间】:2012-12-11 06:51:42
【问题描述】:

我想知道优点和缺点

  • Google 协议缓冲区
  • JSON
  • XML

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

两者都是网络应用程序。

请分享您对此的宝贵想法和建议。我在 google 上看到了很多链接,但意见不一。

【问题讨论】:

  • 你认为这里可能存在共识?
  • 非常感谢。但想了解更多 Protocol Buffers vs JSON。
  • @Barmar 这不是关于共识,而是关于理性选择,关于利弊,最好在元警察开始降低 SO 内容的质量之前提出这个问题。
  • 我曾经强烈反对这种随意关闭的问题。但事实是,如果我正在咨询需要做出此选择的项目,我会想要比 SO 帖子中通常出现的更多信息;您在这里得到的任何建议都是轶事,并且基于对特定项目的要求和约束几乎完全无知。

标签: xml json protocol-buffers data-serialization


【解决方案1】:

json

  • 人类可读/可编辑
  • 无需预先知道架构即可解析
  • 出色的浏览器支持
  • 比 XML 更简洁

XML

  • 人类可读/可编辑
  • 无需预先知道架构即可解析
  • SOAP 等标准
  • 良好的工具支持(xsd、xslt、sax、dom 等)
  • 相当冗长

Protobuf

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

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

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

【讨论】:

  • XML 需要做更多的解码工作,但与 JSON 相比,验证可能是一个主要优势。在处理包含的支付交易之前使用模式验证 XML 可为您提供额外的稳健性。
  • XML 还允许一种叙述风格,其中文本与标签包含交替,如<value>This is a <attention>narrative style</attention>. Tags could appear <exclamation /> in the middle of text</value>。这是 XML 与 JSON 和 Protocol Buffers 相比的独特之处。
  • @Marc Gravell:在前向兼容性方面怎么样。我的印象是这是protobuf的一大卖点?
  • Igor Ganapolsky 我的理解是,这在概念上几乎是不可能的,因为 protobuffs 几乎不需要解析,而 json 的处理阶段是漫长且不可避免的。
  • 只是提到您也可以将模式与 JSON 一起使用。
猜你喜欢
  • 2010-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-25
  • 1970-01-01
  • 2016-12-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多