DataContractSerializer vs XmlSerializer: за и против каждого сериализатора

Мое настольное приложение сериализует объекты с помощью XmlSerializer. Мне предложили вместо этого использовать DataContractSerializer.
В каких сценариях я должен использовать DataContractSerializer?

Большое спасибо

Комментарии.
1. Выходной файл XML хранится локально. Никакие другие приложения не десериализуют объекты из этого XML файла.
2. Мое приложение работает с .NET Framework 3.5 SP1.

Ответ 1

Дэн Ригсби имеет окончательную должность на этом - иди, прочитай это!

XmlSerializer и DataContractSerializer (веб-архив)

Он говорит все, что можно сказать, и очень убедительно.

Короче:

XmlSerializer:

  • существует долгое время
  • - "отказ"; все public становится сериализованным, если вы не скажете это не ([XmlIgnore])

DataContractSerializer:

  • Новый ребенок в городе
  • оптимизирован для скорости (примерно на 10% быстрее, чем XmlSerializer, обычно)
  • "opt-in" - только то, что вы специально отметили как [DataMember] будет сериализовано
  • но все, что помечено [DataMember], будет сериализовано - будь то public или private
  • не поддерживает атрибуты XML (по причинам скорости)