Оба существующих ответа сосредоточены на «кроссплатформенности», но это не имеет отношения к делу. Они утверждают, что «не используйте BinaryFormatter
, если вы используете кроссплатформенность», - что я полностью поддерживаю. Однако существует ряд форматов двоичной сериализации, которые очень кроссплатформенные - протобуф / ASN.1 являются яркими примерами.
Итак, давайте посмотрим на то, что каждый может предложить;
- Двоичный файл обычно меньше, обычно быстрее обрабатывается (на обоих концах) и не так легко читается / редактируется человеком
- Текстовые форматы (xml / json), как правило, более многословны, чем двоичные (хотя часто хорошо сжимаются), но с ними довольно легко работать вручную; но вся эта обработка текста при отображении имеет тенденцию делать их медленнее
- xml очень часто встречается в веб-сервисах и имеет такую поддержку, как xsd, xslt и надежные редакторы xml
- json является основным игроком в связи через браузер (хотя он также используется в веб-сервисах) - имеет тенденцию быть менее формальным, но все же очень эффективным
Обратите внимание, что совместимость не является ни сильной, ни слабой стороной, пока вы выбираете подходящий двоичный формат!
Вот ответ , который сравнивает время сериализации, десериализацию и метрики пространства большинства сериализаторов .NET для вашей справки.