«Форматтер» и «Сериализатор» - какая разница между терминами? - PullRequest
10 голосов
/ 09 сентября 2010

Некоторые вещи в .NET называются «форматерами» - BinaryFormatter, SoapFormatter.

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

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

Ответы [ 3 ]

7 голосов
/ 09 сентября 2010

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

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

4 голосов
/ 09 сентября 2010

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

1 голос
/ 09 сентября 2010

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

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

Принимая во внимание, что SoapFormatter защищен от такой двоичной несовместимости, как текст на основе Unicode или ASCII, но гораздо медленнее!

...