1

この質問は、シリアライザー間の機能の違いをうまく説明しています。BinaryFormatter高速で、XmlSerializer相互運用可能などです。私はそれを知っています。

しかし、意図の違いは何ですか? 各クラスはどのようなユースケースのために設計されましたか?

特に:

  • 十分に高速に見えるのに、なぜ彼らXmlSerializerはプライベートデータをブラインドにすることにしたのですかBinaryFormatter(おそらく遅いリフレクションを介して)
  • XmlSerializerSoapFormatterおよびという 3 つの個別の XML シリアライザーを作成したのはなぜDataContractSerializerですか?
  • オプトインとオプトアウトがあるのはなぜですか?
  • なぜ彼らはインターフェイスをそれほど一貫性のないものにしたのですか? OnDeserializedCallbackたとえば、XmlSerializer は同等のものを提供しません。別の例 - XmlSerializer はIsNullable [XmlIgnore]、 BinarySerializer が使用するもの[OptionalField][NonSerialized].
4

1 に答える 1

0

XML シリアライゼーションは、特定の XML 構造を作成するために使用され、オブジェクトのシリアライズ方法 (属性やノードなどを使用する場合の XML の外観) を変更できます。

Binary Serialization は、オブジェクトのメモリ内構造を取得してディスクに書き込むだけなので、プライベート メンバーを「認識」します。非常に高速ですが、相互運用性はありません。特にオブジェクト構造がわずかに異なる場合 (アプリの新しいバージョンが古いバイナリ ファイルを逆シリアル化しようとしている場合など)。

SoapFormatter と DataContractSerializer は、.NET コンポーネント (通常は階層化されたアプリケーション) 間の通信に使用されます。DataContractSerializer は WCF で使用され、SoapFormatter は古い SOAP ユーティリティで使用されます。

于 2010-09-09T15:46:46.620 に答える