Я нашел этому работу мои сервисы WCF обычно, когда включенные типы данных не имеют [DataContract]
, но [Serializable]
вместо этого.
Но все учебные руководства WCF показывают первый вместо последнего. Почему?
DataContractAttribute дает вам больше контроля над тем, что отправляется по сети, поэтому вы можете выбрать отправку только необходимых полей данной сущности. Serializable использует сериализацию платформы, которая предполагает .NET и одинаковые (или похожие) версии типов на обоих концах сети - он (обычно) сериализует все частные члены, состояния и т. Д. DCS предназначен для облегченного XML-типа. представление, над которым вы можете иметь некоторый контроль, а XmlSerializer предназначен для формата XML, над которым вы можете очень точно контролировать (данные атрибутов и т. д.).
Одним из преимуществ является то, что сериализатор DataContract работает намного быстрее, чем старый XmlSerializer.
Изменить: в примерах будет показан атрибут [DataContract], поскольку он предназначен для DataContractSerializer который использует WCF.
Недостаточно пометить класс с помощью [DataContract], у вас есть чтобы украсить поля, которые вы хотите сериализовать, также с помощью [DataMember].
Контракт данных - это модель сериализации с возможностью выбора, где сериализатор XML - это отказ.