Сериализация WCF - дополнительная информация

Я читал статьи Microsoft. В них объяснялось, что WCF использует DataContractSerializer для сериализации. Но в статьях не объяснялось, почему DataContractSerializer предпочтительнее XmlSerialization. Может ли кто-нибудь предоставить мне дополнительную информацию?


person user274364    schedule 05.04.2010    source источник
comment
Вот еще одна действительно хорошая статья в журнале MSDN Magazine о сериализации WCF.   -  person marc_s    schedule 05.04.2010


Ответы (1)


Здесь - это статья со сравнением.

Ключевой раздел:

XmlSerializer

Преимущества:

  1. Отказ от использования свойств сериализации, а не согласия. Это означает, что вам не нужно указывать все свойства для сериализации, а только те, которые вы не хотите сериализовать2. Полный контроль над сериализацией свойства, включая то, что это должен быть узел или атрибут
  2. Поддерживает больше стандартов XSD

Недостатки:

  1. Может только сериализовать свойства

  2. Недвижимость должна быть общедоступной

  3. У свойств должны быть get и set, что может привести к некоторому неудобному дизайну.

  4. Поддерживает более узкий набор типов

  5. Невозможно понять атрибут DataContractAttribute и не будет сериализовать его, если также нет атрибута SerializableAttribute.

DataContractSerializer

Преимущества:

  1. Согласитесь, а не откажитесь от свойств сериализации. Это означает, что вы указываете, что хотите сериализовать

  2. Поскольку это опция, вы можете сериализовать не только свойства, но и поля. Вы даже можете сериализовать непубличные члены, такие как частные или защищенные члены. И вам не нужен набор для свойства (однако без сеттера вы можете сериализовать, но не десериализовать)

  3. Выполняет сериализацию данных примерно на 10% быстрее, чем XmlSerializer, потому что, поскольку у вас нет полного контроля над тем, как они сериализуются, можно многое сделать для оптимизации процесса сериализации / десериализации.

  4. Может понимать атрибут SerializableAttribute и знать, что его нужно сериализовать.

  5. Дополнительные параметры и контроль над KnownTypes

Недостатки:

  1. Нет контроля над сериализацией объекта, кроме установки имени и порядка.
person Anders Abel    schedule 05.04.2010