3

オブジェクトモデルのシリアル化に基づいて、オブジェクトモデルをハッシュすることを検討しています。

.NET BinaryFormatter を使用してオブジェクト グラフをシリアル化する場合、関連するすべてのオブジェクトが同じ値で構成されている別のオブジェクト グラフに対して、シリアル化された表現はバイトごとにまったく同じであることが保証されますか?

直感的にはそう思いますが、オブジェクト/参照 ID が実際のシリアル化された表現に何らかの影響を与えるかどうかはわかりません。

前もって感謝します。

4

1 に答える 1

2

それが保証されているかどうかはわかりません。文書化された保証がないため、個人的には信頼できません。特に:

  • 実装するものISerializable(つまり、カスタムのシリアライゼーション) は何でも好きなようにできます
  • 辞書のようなものを含むものはすべて信頼できない可能性があります-単に辞書内に定義された順序がなく、元のスペースと再構成されたスペースなどに依存する可能性があるためです。
  • 微妙な互換性があるかもしれませんが、プラットフォーム、リビジョンなどの間に同一の変更はありません

ただし、バイナリの等価性について話している場合は、データの保存BinaryFormatterと、後日のその後の比較について話していると推測されます。強調させてください:IMOBinaryFormatterは保管には適していません。プラットフォームとアプリケーションのバージョンを共有する実行中のシステム間でデータを転送するのは問題ありませんが、バージョンの違いが原因で人々が穴に詰まってしまうのを私は何度も見てきましたBinaryFormatter。これらの理由から、私は protobuf に興味を持ち、その間に「バージョン管理」された既存のオブジェクト モデルに対するストレージとリハイドレートに適した独自のシリアライザーを作成しました。

于 2011-04-26T11:33:34.777 に答える