8

マスタースレーブ スタイルのアプリケーションを開発しています。マスター アプリケーションは、状態データをスレーブに送信して、一定の速度で処理および表示します。状態データは、多くのフィールドを含む 1 つのクラスにラップされます。これらのフィールド タイプは、プリミティブ、クラス、インターフェイス、インターフェイスのリストなどで構成されます。すべての型は BCL またはカスタム型であるため、必要に応じてカスタム型を変更できます。マスター アプリケーションとスレーブ アプリケーションの両方が .NET 4.0 になります。マスター アプリケーションとスレーブ アプリケーションはペアで提供されるため、シリアライゼーションのバージョン管理には関心がありません。

マスターで状態データをシリアル化し、スレーブで逆シリアル化する「迅速な」方法が必要です。私が「速い」と言うとき、私は開発時間について話しているのです (しかし、解決策がひどかった場合は、処理時間が要因になる可能性があります)。ただし、マスターとスレーブは WAN 経由で分散されるため、ある程度のコンパクトさも必要です。

BinaryFormatter簡単な解決策として、現在、単純にストリームを使用して圧縮することを考えていますGZipStream。これは .NET 4.0 の進むべき道ですか?

4

2 に答える 2

5

開発のスピードが鍵である場合 (特に、一部のシリアライザーに対して適切に構成する必要があるインターフェイスなどがあるため)、おそらく。イベントを次のようにマークすることを忘れないでください。

[field:NonSerialized]

他のすべての尺度( CPU パフォーマンス、帯域幅、バージョンごとの堅牢性、相互運用性、メンテナンスのコストなど) では、他の形式を選択します:)

ここでは、プロファイリングされた選択を示します。

WCF バインディングで使用されるシリアル化のパフォーマンス テスト

おそらく驚くことではありませんが(私が書いたので)、私はprotobuf-netに傾いています...

于 2011-03-12T18:54:56.903 に答える
2

ここでプロトコル バッファを見てください: Fast and compact object serialization in .NET

于 2011-03-12T19:01:13.587 に答える