マイクロソフトの記事をいくつか読んだところ、WCFがDataContractSerializer
シリアル化に使用することが説明されていましたが、DataContractSerializerがXmlSerializationよりも優先される理由は説明されていませんでした。追加情報を教えてもらえますか?
1 に答える
これが比較の記事です。
キーセクション:
XmlSerializer
利点:
- シリアル化するためのオプトインプロパティではなくオプトアウトプロパティ。つまり、シリアル化するためにすべてのプロパティを指定する必要はなく、シリアル化する必要のないプロパティのみを指定する必要があります2。プロパティがノードまたは属性である必要があることを含め、プロパティのシリアル化方法を完全に制御します
- より多くのXSD標準をサポート
短所:
プロパティのみをシリアル化できます
プロパティは公開する必要があります
プロパティにはgetとsetが必要です。これにより、デザインが厄介になる可能性があります。
より狭いタイプのセットをサポートします
DataContractAttributeを理解できず、SerializableAttributeも存在しない限りシリアル化されません
DataContractSerializer
利点:
シリアル化するためのオプトアウトプロパティではなくオプトインプロパティ。これは、シリアル化するものを指定することを意味します
オプトインであるため、プロパティだけでなくフィールドもシリアル化できます。プライベートメンバーや保護されたメンバーなどの非パブリックメンバーをシリアル化することもできます。また、プロパティにセットを設定する必要もありません(ただし、セッターがないと、シリアル化はできますが、逆シリアル化はできません)
データのシリアル化はXmlSerializerよりも約10%高速です。これは、データのシリアル化方法を完全に制御できないため、シリアル化/逆シリアル化プロセスを最適化するために実行できることがたくさんあるためです。
SerializableAttributeを理解し、シリアル化する必要があることを知ることができます
より多くのオプションとKnownTypesの制御
短所:
- 名前と順序を設定する以外に、オブジェクトのシリアル化方法を制御することはできません