私はC++オブジェクトのシリアル化ライブラリを作成しています。これは自己学習と機能強化のためのものです。&私はブーストやGoogleプロトコルbufのような既製のライブラリを使いたくありません。 あなたの経験やコメントを伝えてください(タグ価値などのエンコーディングを作成するなど)。 PODをサポートし、それに続いて非線形DSをサポートしたいと考えています。C++オブジェクトのシリアル化手法に関する提案
おかげで PS:HNY2012
私はC++オブジェクトのシリアル化ライブラリを作成しています。これは自己学習と機能強化のためのものです。&私はブーストやGoogleプロトコルbufのような既製のライブラリを使いたくありません。 あなたの経験やコメントを伝えてください(タグ価値などのエンコーディングを作成するなど)。 PODをサポートし、それに続いて非線形DSをサポートしたいと考えています。C++オブジェクトのシリアル化手法に関する提案
おかげで PS:HNY2012
私は何年か前に記事を書きました。コードとツールは時代遅れになる可能性がありますが、概念は変わりません。
thisがお手伝いできます。
プロセス間通信のためにシリアル化が必要な場合は、インターフェイスを定義するためにいくつかのインターフェイス言語(IDLまたはASN.1)を使用することをお勧めします。
他の言語(C++よりも)もサポートしやすくなります。また、コード/スタブジェネレータを実装する方が簡単です。
はい、私の目的はワイヤでオブジェクトを送信することです。 IDL/ASNを使用している場合。1では、私のデータ型をエンコーディングするために対応するコンパイラ(idlコンパイラ)を使用する必要があります。本質的には(BER/PER)などです。データをパックし、ワイヤで送信するための独自のエンコーディングを定義したかったのです。 – sanjayk79
私はこの数ヶ月間、似たようなことに取り組んできました。私はBoostを使うことができませんでした。なぜなら、既存のクラス(大規模な既存のコードベース)をシリアル化し、serialize()仮想関数を持つインタフェースからクラスを継承するのは不適切でした(多重継承を必要としません) 。
撮影したアプローチは、次の顕著な特徴を持っていた:
std::fstream
から派生)が作成されました。これには、ポインタ以外のデータ型、ポインタデータ型、およびSTLデータ型をシリアル化するためのテンプレート関数が含まれています。ストリームオブジェクトは、設計上、読み取り専用モードまたは書き込み専用モードでしか開くことができないため、ファイルの読み込みまたはファイルへの書き込みには、同じserialize()関数を使用できます。ストリームが開かれました。したがって、クラスメンバーの読み書きの順番に不一致が生じる可能性はありません。上記の共有アイデアのいくつかは、ウェブ上のページで確認できます。http://www.cs.sjsu.edu/~pearce/modules/lectures/cpp/Serialization.htm。希望が役立ちます。
[Boostでクラスをシリアライズ可能にするために何かを継承する必要はありません。](http://www.boost.org/doc/libs/1_48_0/libs/serialization/doc/tutorial.html#nonintrusiveversion)。あなたがクラスを直列化するのに十分ではないが何かを継承する必要がない場合は、private変数が 'serialize()'関数に見えるようにクラスを変更する必要があるかもしれません。 –
合意。しかし、Boostは、すでに複雑な階層構造を持っていたため、導入するのが非常に複雑でした。手作業で行われたことは、長期的にはより適切で維持可能に見えました。 – Somesh
ありがとうSomesh、あなたの入力は本当に役立ちます。私はあなたから提供されたリンクを通過しています。私は、ネットワークを介して通信するために、シリアル化されたオブジェクトを使用しています。この記事では、非線形DS(thats good)のサポートについても説明します。私は一度私は私の最初のプロトタイプを持っているこれについて議論するより多くを持っている:) – sanjayk79
ありがとう@Emilio Garavaglia。私は洞察のためにあなたの記事を調べます – sanjayk79