Должен ли я по-прежнему использовать BinaryFormatter для простой сериализации в .NET 4.0? - PullRequest
8 голосов
/ 12 марта 2011

Я занимаюсь разработкой приложения в стиле мастер-раб. Главное приложение отправит данные о состоянии ведомому (-ым) на обработку и отображение с некоторой постоянной скоростью. Данные о состоянии упакованы в один класс, который содержит много полей. Эти типы полей состоят из примитивов, классов, интерфейсов, списков интерфейсов и т. Д. Все типы являются либо BCL, либо пользовательскими типами, поэтому пользовательские типы могут быть изменены при необходимости. И ведущее, и ведомое приложения будут .NET 4.0. Я не занимаюсь версионностью сериализации, так как главное и подчиненное приложения будут доставляться в паре.

Мне нужен «быстрый» способ сериализации данных состояния на главном устройстве и десериализации их на ведомых устройствах. Когда я говорю «быстро», я больше говорю о времени разработки (но время обработки может быть фактором, если решение будет ужасным). Тем не менее, ведущий и ведомый устройства будут распределены по глобальной сети, поэтому неплохой уровень компактности также подойдет.

Для быстрого решения я сейчас думаю о простом использовании BinaryFormatter и последующем сжатии потока с помощью GZipStream. Это путь для .NET 4.0?

Ответы [ 2 ]

5 голосов
/ 12 марта 2011

Если скорость разработки является ключевым фактором (особенно если у вас есть интерфейсы и т. Д., Которые вам необходимо соответствующим образом настроить для некоторых сериализаторов), то возможно. Просто не забудьте пометить любые события как:

[field:NonSerialized]

Вкл. каждый второй показатель (производительность процессора, пропускная способность, надежность в зависимости от версии, совместимость, стоимость обслуживания и т. Д.) Я бы выбрал другие форматы:)

Вот подборка профилированных:

Тесты производительности сериализаций, используемые привязками WCF

Возможно, это не удивительно (с тех пор, как я написал это), но я склоняюсь к protobuf-net ...

2 голосов
/ 12 марта 2011

Посмотрите на буферы протокола здесь: Быстрая и компактная сериализация объектов в .NET

...