Was ist der Vorteil der Verwendung von DataContractAttribute über SerializableAttribute?

8

Ich habe festgestellt, dass meine WCF-Dienste normal funktionieren, wenn die beteiligten Datentypen nicht das [DataContract] , sondern das [Serializable] haben.

Aber alle WCF-Tutorials zeigen die erste anstelle der zweiten. Warum?

    
Jader Dias 16.12.2009, 01:46
quelle

3 Antworten

11

DataContractAttribute gibt Ihnen mehr Kontrolle darüber, was über die Verbindung gesendet wird. Sie können also nur die erforderlichen Felder einer bestimmten Entität senden. Serializable verwendet eine Plattform-Serialisierung, die .NET und die gleichen (oder ähnlichen) Versionen der Typen an beiden Enden der Leitung voraussetzt. Sie serialisiert (normalerweise) alle privaten Mitglieder, den Zustand usw. DCS ist für einen leichten XML-ish gedacht Darstellung, die Sie kontrollieren können, und XmlSerializer ist für ein XML-Format, das Sie sehr gut kontrollieren können (Attributdaten usw.).

    
nitzmahone 16.12.2009, 02:32
quelle
9

Es ist nicht genug, die Klasse mit [DataContract] zu markieren, Sie müssen die Felder, die Sie serialisieren möchten, ebenfalls mit [DataMember] dekorieren.

Der Datenvertrag ist ein "Opt-In" -Modell der Serialisierung, bei dem der XML-Serialzier "Opt-out" ist.

    
James Bender 16.12.2009 03:37
quelle
8

Ein Vorteil ist, dass der DataContract Serializer viel schneller ist als der alte XmlSerializer.

Bearbeiten: In den Beispielen wird das Attribut [DataContract] angezeigt, da es für den von WCF verwendeten DataContractSerializer entworfen wurde.

    
Doug Ferguson 16.12.2009 02:55
quelle