[DataContract]
関連するデータ型に がなく、代わりに がある場合、WCF サービスが正常に動作することがわかりました[Serializable]
。
ただし、すべての WCF チュートリアルは、後者ではなく最初のチュートリアルを示しています。なんで?
[DataContract]
関連するデータ型に がなく、代わりに がある場合、WCF サービスが正常に動作することがわかりました[Serializable]
。
ただし、すべての WCF チュートリアルは、後者ではなく最初のチュートリアルを示しています。なんで?
DataContractAttribute を使用すると、ネットワーク経由で送信されるものをより詳細に制御できるため、特定のエンティティの必要なフィールドのみを送信することを選択できます。Serializable は、プラットフォームのシリアル化を使用します。これは、.NET と、ワイヤの両端に同じ (または同様の) バージョンの型があることを前提としています。(通常) すべてのプライベート メンバー、状態などをシリアル化します。DCS は、軽量の XML っぽいものを対象としています。 XmlSerializer は、非常に細かく制御できる XML 形式 (属性データなど) 用です。
クラスを [DataContract] でマークするだけでは不十分です。シリアル化するフィールドも [DataMember] で装飾する必要があります。
データ コントラクトはシリアライゼーションの「オプトイン」モデルであり、XML シリアライザーは「オプトアウト」です。
1 つの利点は、DataContract シリアライザーが古い XmlSerializer よりもはるかに高速であることです。
編集: この例では [DataContract] 属性が表示されます。これは、WCF が使用する DataContractSerializer 用に設計された属性であるためです。