部分的なシリアル化をサポートするC ++シリアル化ライブラリ? [閉まっている]

StackOverflow https://stackoverflow.com/questions/1810372

質問

部分的なシリアル化をサポートする既存のC ++シリアル化ライブラリはありますか?

「部分的なシリアル化」によるつまり、3つの特定のメンバーの値を保存し、後でその保存されたコピーを別のインスタンスに適用できるようにしたいということです。これら3人のメンバーのみを更新し、他のメンバーはそのままにしておきます。

これは、ネットワークを介したデータの同期に役立ちます。クライアントとサーバーにオブジェクトがあり、サーバーでメンバーが変更されたときに、そのメンバーの更新された値を含むメッセージをクライアントに送信したいとします。そのメンバーのみ。オブジェクト全体のコピーをネットワーク経由で送信したくありません。

boost :: serialization の外観は一見すべてまたは何もサポートしません。

編集:もともとこれを書いてから3年後、私はそれを振り返って自分自身に言った。 boost :: serializationを使用すると、保存するメンバーまたは保存しないメンバーを定義できるため、説明したように「部分的なシリアル化」をサポートします。さらに、C ++にはリフレクションシリアル化ライブラリがないため、ソースファイルを解析するための何らかの外部ツールが付属していないか、C ++コードの生成に使用される別の入力ファイル形式がない限り、保存する各メンバーを明示的に指定する必要があります(例:プロトコルバッファの機能)。これを書いたとき、私は概念的に混乱していたに違いないと思います。

役に立ちましたか?

解決

ここでは、明らかにシリアル化を探していません。

シリアル化とは、オブジェクトを保存してから、バイトストリームからオブジェクトを再作成することです。ビデオゲームの保存やWebサーバーのセッションコンテキストについて考えてください。

ここで必要なのはメッセージングです。 GoogleのFlatBuffers はそのために便利です。オプションとしてすべての単一フィールドを含むメッセージを指定し、メッセージの受信時に、存在するフィールドでオブジェクトを更新し、他のフィールドはそのままにします。

FlatBuffersの素晴らしい点は、ゼロコストの解析ステップに加えて、前方互換性と後方互換性、テキストおよびバイナリエンコーディング(デバッグに最適なテキスト、純粋なパフォーマンスに優れたバイナリ)をうまく処理できることです。

さらに、メッセージをどこかに保存し、それを検査するためにhtml guiを一緒に送りたい場合は、別の言語(たとえばpythonやruby)でメッセージをデコードすることもできます!

他のヒント

私はそれらに精通していませんが、 Googleもチェックアウトできます。プロトコルバッファ

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top