Я читал статьи Microsoft. В них объяснялось, что WCF использует DataContractSerializer
для сериализации. Но в статьях не объяснялось, почему DataContractSerializer предпочтительнее XmlSerialization. Может ли кто-нибудь предоставить мне дополнительную информацию?
Сериализация WCF - дополнительная информация
Ответы (1)
Здесь - это статья со сравнением.
Ключевой раздел:
XmlSerializer
Преимущества:
- Отказ от использования свойств сериализации, а не согласия. Это означает, что вам не нужно указывать все свойства для сериализации, а только те, которые вы не хотите сериализовать2. Полный контроль над сериализацией свойства, включая то, что это должен быть узел или атрибут
- Поддерживает больше стандартов XSD
Недостатки:
Может только сериализовать свойства
Недвижимость должна быть общедоступной
У свойств должны быть get и set, что может привести к некоторому неудобному дизайну.
Поддерживает более узкий набор типов
Невозможно понять атрибут DataContractAttribute и не будет сериализовать его, если также нет атрибута SerializableAttribute.
DataContractSerializer
Преимущества:
Согласитесь, а не откажитесь от свойств сериализации. Это означает, что вы указываете, что хотите сериализовать
Поскольку это опция, вы можете сериализовать не только свойства, но и поля. Вы даже можете сериализовать непубличные члены, такие как частные или защищенные члены. И вам не нужен набор для свойства (однако без сеттера вы можете сериализовать, но не десериализовать)
Выполняет сериализацию данных примерно на 10% быстрее, чем XmlSerializer, потому что, поскольку у вас нет полного контроля над тем, как они сериализуются, можно многое сделать для оптимизации процесса сериализации / десериализации.
Может понимать атрибут SerializableAttribute и знать, что его нужно сериализовать.
Дополнительные параметры и контроль над KnownTypes
Недостатки:
- Нет контроля над сериализацией объекта, кроме установки имени и порядка.