В чем преимущество использования DataContractAttribute над SerializableAttribute? - PullRequest
8 голосов
/ 16 декабря 2009

Я обнаружил, что мои службы WCF работают нормально, когда для используемых типов данных вместо [DataContract] вместо [Serializable].

Но во всех уроках WCF вместо первого показывается первый. Почему?

Ответы [ 3 ]

11 голосов
/ 16 декабря 2009

DataContractAttribute дает вам больший контроль над тем, что отправляется по проводной связи, поэтому вы можете выбрать отправку только необходимых полей данной сущности. Сериализуемый использует сериализацию платформы, которая предполагает .NET и одинаковые (или аналогичные) версии типов на обоих концах проводника - он (обычно) сериализует все закрытые члены, состояние и т. Д. DCS предназначен для упрощенного XML-вывода представление о том, что вы можете иметь некоторый контроль, и XmlSerializer предназначен для формата XML, который вы можете очень хорошо контролировать (данные атрибутов и т. д.).

9 голосов
/ 16 декабря 2009

Недостаточно пометить класс с помощью [DataContract], необходимо также украсить поля, которые вы хотите сериализовать, с помощью [DataMember].

Контракт данных представляет собой модель сериализации «opt in», где XML serialzier «opt out».

8 голосов
/ 16 декабря 2009

Одним из преимуществ является то, что сериализатор DataContract намного быстрее, чем старый XmlSerializer.

Редактировать: в примерах будет показан атрибут [DataContract], поскольку он предназначен для DataContractSerializer, который использует WCF.

...