私は2つのコンポーネントを持つ分散アプリケーションに取り組んでいます。1つは標準のC++(マネージC ++ではなくLinuxプラットフォームで実行)で記述されており、もう1つはC#で記述されています。どちらもメッセージバスを介して通信しています。
オブジェクトをC++からC#アプリケーションに渡す必要がある状況があります。このために、これらのオブジェクトをC ++でシリアル化し、C#で逆シリアル化する必要があります(.NETでのマーシャリング/アンマーシャリングなど)。このシリアル化は、XMLではなくバイナリで実行する必要があります(パフォーマンス上の理由から)。
Boost.Serialization
両端がC++で実装されていたときにこれを行っていましたが、一方の端に.NETアプリケーションがBoost.Serialization
あるので、実行可能なソリューションではありません。
C ++と.NETの境界を越えて(逆)シリアル化を実行できるソリューション、つまりクロスプラットフォームのバイナリシリアル化を探しています。
(逆)シリアル化コードをC ++ dllに実装P/Invoke
し、.NETアプリケーションで使用できることはわかっていますが、最後の手段としてそれを維持したいと思います。
また、gzipのような標準を使用しているかどうかを知りたいのですが、それは効率的ですか?gzipに代わるものは他にありますか?それらの長所/短所は何ですか?
ありがとう