8

[DataContract]関連するデータ型に がなく、代わりに がある場合、WCF サービスが正常に動作することがわかりました[Serializable]

ただし、すべての WCF チュートリアルは、後者ではなく最初のチュートリアルを示しています。なんで?

4

3 に答える 3

11

DataContractAttribute を使用すると、ネットワーク経由で送信されるものをより詳細に制御できるため、特定のエンティティの必要なフィールドのみを送信することを選択できます。Serializable は、プラットフォームのシリアル化を使用します。これは、.NET と、ワイヤの両端に同じ (または同様の) バージョンの型があることを前提としています。(通常) すべてのプライベート メンバー、状態などをシリアル化します。DCS は、軽量の XML っぽいものを対象としています。 XmlSerializer は、非常に細かく制御できる XML 形式 (属性データなど) 用です。

于 2009-12-16T02:32:37.360 に答える
9

クラスを [DataContract] でマークするだけでは不十分です。シリアル化するフィールドも [DataMember] で装飾する必要があります。

データ コントラクトはシリアライゼーションの「オプトイン」モデルであり、XML シリアライザーは「オプトアウト」です。

于 2009-12-16T03:37:01.987 に答える
8

1 つの利点は、DataContract シリアライザーが古い XmlSerializer よりもはるかに高速であることです。

編集: この例では [DataContract] 属性が表示されます。これは、WCF が使用する DataContractSerializer 用に設計された属性であるためです。

于 2009-12-16T02:55:25.207 に答える