2015-01-10 6 views
19

最近(2015年1月)マイクロソフトオープンソースBond、図式化されたデータを扱うためのフレームワーク。多くの側面で、GoogleのProtocol Buffersに似ています。マイクロソフトのボンドとGoogleのプロトコルバッファの相違点

2つの大きな違いは何ですか?賛否両論は何ですか、つまり、私はどちらを使うのですか?もちろん、私は他のプロジェクトや既存のAPIとの一貫性のような明白なことではなく、両方のライブラリの機能について話しています。例を挙げると、Bondにはbonded<T>があります。私が正しく覚えていれば、プロトコルバッファには対応していません。

+0

[既にかなり](http://microsoft.github.io/bond/why_bond.html)。 –

+0

@HansPassantそれを指摘してくれてありがとう(私はどのように私はそのページを見逃すことができないか分からない)。一方、フレームワークの作成者以外の人からも聞くことは素晴らしいことだと思います。 – dtldarek

答えて

26

一般的に、Bondはより良いタイプのシステムを持ち、複数のプロトコルをサポートしています。特に

、長所は、次のとおりvector<T>map<T>list<T>

  • ボンドタイプセーフ遅延デシリアライゼーション(bonded<T>
  • をサポート:

    • ボンド
    • ボンドがコレクションを表すために異なるタイプを有するジェネリックをサポート
    • ボンドは、複数形式(高速バイナリ、コンパクトバイナリ、XML、JSON)+マーシャリングとトランスコードをサポートします

    短所:

    • ボンドは、固定および可変整数符号化のための異なるタイプをサポートしていません。 Bondでは、整数がどのようにコード化されるかは、出力形式(高速またはコンパクト)によって決まりますが、プロトコルバッファには、常に固定サイズの整数型(fixed32およびfixed64)があります。
    • ボンド(プロトコルバッファでoneof)を労働組合の種類をサポートしていません
    • ボンドは(まだ)

    をJava実装を持っていない私は、いくつかのテストをしました、そして、それはボンドで簡単なメッセージのサイズが表示されますProtoBufバイナリ形式はほぼ同じです。私は、BondとC#ProtoBufライブラリを使ってシリアライズとデシリアライズ時間を比較しました。私のケースでは、Bondが少し良く機能していました。source code on GitHub

    要約すると、同じデータを異なるフォーマットで表現する必要がある場合バイナリとして保存しますが、JSONなどで公開してください。

    +0

    これを実証する簡単なテストはありますか? – mjsabby

    +1

    @mjsabby、あなたは何を見たいですか?私のコードはここにあります:https://github.com/takemyoxygen/bond-performance-tests – takemyoxygen

    関連する問題