"Formatter" и "Serializer" - любая разница между условиями?

Некоторые вещи в .NET называются "formatters" - BinaryFormatter, SoapFormatter.

Другие называются "сериализаторами" - XmlSerializer, DataContractSerializer.

Почему разница?

Ответ 1

Немного слабый, но есть тонкая разница. В среде .NET есть 17 конкретных классов, которые форматируют XML. Эти форматиры скрыты, вы получаете экземпляр для них с помощью метода XmlWriter.Create(). То же самое для DataContractSerializer, фактическое форматирование выполняется, скажем, экземпляром XmlDictionaryWriter.

Нет такой косвенности для BinaryFormatter или SoapFormatter, они сами позаботятся о форматировании. Другими словами, форматы Formatter, Serializer использует форматтер.

Ответ 2

Нет, они синонимы. Они делают то же самое: конвертируют объект CLR в переносимую последовательность байтов.

Ответ 3

Различия в formatters важны - BinaryFormatter, как он предлагает, данные находятся в бинарном режиме, тогда как SoapFormatter - в текстовом режиме Xml, бросает разные способы сериализации фактически зависят от типа форматировщиков, двоичные данные с использованием BinaryFormatter, как правило, намного меньше и быстрее, чем мыльные форматиры.

Именно по этой причине, если вы хотите взять "дамп памяти", лучше использовать BinaryFormatter и сериализовать/десериализовать, ценой взаимодействия данных между разными архитектурами - это означает может быть несовместимо при обмене данными между различными платформами, но более быстрая обработка...

В то время как с SoapFormatter он защищен от таких двоичных несовместимостей, поскольку это текст, основанный на Unicode или ASCII, но намного медленнее!