"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, но намного медленнее!