単純な匿名パイプ-使用するラッパーモデル(WinAPI、C ++)
質問
Windowsには2つの実行中のプロセスがあり、各プロセスにはもう一方へのパイプがあります。
複雑なクラスをシリアル化し、あるプロセスから別のプロセスに送信したい。私はすでにシリアル化手順を実行しており、パイプがバイナリストリームを送信していることを理解しています。シリアル化されたデータを送信するにはどうすればよいですか? WinAPIとC ++を使用しています。
カスタムプロトコルを開発する必要がありますか?もしそうなら、それはこの特定のクラスに一般的または一意である必要がありますか?シリアル化されたクラスを送信するときに仮想テーブルを保持できますか?
この場合に一般的に使用されるモデルまたは設計パターンはありますか?少しのサンプルコードをいただければ幸いです。ありがとう!
解決
boost::serialization
のチュートリアルです。パイプを介してデータを送信し、反対側で逆シリアル化するとうまくいくと想像できます: http://www.boost.org/doc/libs/1_37_0/libs/serialization/doc/tutorial.html
他のヒント
プロトコルバッファをチェックアウトできます。
boost :: asio :: windows :: stream_handleを使用して、ioのようにiostreamを整理し、非同期で行うことができます。
boost serializeは型について心配するため、vtablesについて心配する必要はありません。あなたがしなければならない唯一のことは、どんなタイプでもシリアライズすることを確認し、デシリアライズする際に反対側で EXACT SAME TYPE を使用することです。