googleプロトコルバッファーvs json vs XML [終了]


230

の長所と短所を知りたい

  • Googleプロトコルバッファ
  • JSON
  • XML

PerlとJavaの2つのアプリケーションに1つの共通フレームワークを実装したいと思います。したがって、PerlとJavaの両方のテクノロジーで使用できる共通サービスを作成したいと考えています。

どちらもWebアプリケーションです。

これに関するあなたの貴重な考えと提案を教えてください。私はグーグルで多くのリンクを見ましたが、すべてが混合した意見を持っています。


9
そして、あなたはここにコンセンサスがある可能性が高いと思いますか?
Barmar 2012


1
色々ありがとう。しかし、JSONと比較してプロトコルバッファについて詳しく知りたいと考えています。
Manoj Kathiriya

19
@Barmarコンセンサスについてではなく、合理的な選択について、賛否両論についてです。メタ警察がSOコンテンツの品質を低下させ始める前に質問が出されたのは良いことです。
ボリストロイホフ2014年

私はそのような質問が勝手に閉じられることに強く反対していました。しかし、実際には、この選択を行う必要があるプロジェクトに相談した場合、SOの投稿に通常表示されるよりも多くの情報が必要になります。ここで得られるアドバイスは逸話的であり、特定のプロジェクトの要件と制約をほとんど完全に知らないことに基づいています。
Michael Kay

回答:


279

ジェイソン

  • 人間が読み取り可能/編集可能
  • 事前にスキーマを知らなくても解析できます
  • 優れたブラウザサポート
  • XMLよりも簡潔

XML

  • 人間が読み取り可能/編集可能
  • 事前にスキーマを知らなくても解析できます
  • SOAPなどの標準
  • 優れたツールサポート(xsd、xslt、sax、domなど)
  • かなり冗長

プロトブフ

  • 非常に密なデータ(小さな出力)
  • スキーマを知らずに堅牢にデコードするのは難しい(データ形式は内部的にあいまいであり、明確にするためにスキーマが必要)
  • 非常に高速な処理
  • 人間の目を対象としたものではない(密なバイナリ)

ほとんどすべてのプラットフォームでサポートが良好です。

個人的には、最近XMLを使用することはほとんどありません。コンシューマーがブラウザーまたはパブリックAPIである場合、私はjsonを使用する傾向があります。内部APIでは、パフォーマンスのためにprotobufを使用する傾向があります。(ヘッダーまたは個別のエンドポイントを介して)パブリックAPIで両方を提供することもうまく機能します。


8
XMLはデコードの作業が多くなりますが、検証はJSONよりも大きな利点になります。XMLに含まれる支払いトランザクションを処理する前にスキーマでXMLを検証すると、堅牢性がさらに強化されます。
CC。

11
XMLはまた、テキストがのようなタグの包含で代替される物語スタイルを可能にします<value>This is a <attention>narrative style</attention>. Tags could appear <exclamation /> in the middle of text</value>。これは、JSONおよびプロトコルバッファと比較した場合のXMLのユニークな機能です。
Paul

3
@Marc Gravell:前方互換性に関してはどうですか。これがプロトブフの大きなセールスポイントの1つだと思うのですが。
トーマスアーレ2014

1
Igor Ganapolskyプロトバフに必要な解析がほとんどまたはまったくないため、これは概念的にほとんど不可能であると私は理解しています。一方、処理フェーズは長く、jsonでは避けられません。
ジュールGM

3
JSONでもスキーマを使用できることを説明します。
ジーザスアングロ2017年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.