サーバーがMS.NETで実行され、クライアントがMono(これはUnity3Dエンジンです)で実行されており、BinaryFormatter()を実行しようとすると、次のようにオブジェクトを逆シリアル化します。
[Serializable]
public class Simulator
{
public IDictionary<int, Task> tasks = new Dictionary<int, Task>();
クライアント側がタイプを検出/ロードできません:ディクショナリ、リスト... MS.NETで実行されているのと同じ「クライアントコード」が正常に機能します。つまり、逆シリアル化中に例外が発生しません。
http://www.mono-project.com/FAQ:_Technical#Compatibilityから読んだように、これは一般的な問題です。
「独自のクラスをシリアル化する場合は、シリアル化に使用されるアセンブリとクラスを制御できるため、問題はありません。ただし、フレームワークからオブジェクトをシリアル化する場合は、内部構造がこれらのオブジェクトは異なる場合があります。この互換性は、異なるMS.NETバージョンまたはMonoバージョン間でも保証されません。」
ProtoBuf-Netは、このシリアル化/逆シリアル化の問題を回避/解決するのに役立ちますか?