Альтернатива BinaryFormatter

Я покупаю альтернативу/замену BinaryFormatter.

Текущие проблемы, которые у меня есть с BinaryFormatter (и альтернативы должны решить эту проблему):
1) обратная совместимость (можно десериализовать классы, сериализованные с использованием более ранней версии)
2) размер
3) скорость

Я проверил AltSerializer, который выглядит нормально, некоторые противоречивые отчеты о скорости, однако похоже, что он поддерживает обратную совместимость.

Я также просмотрел protobuf-net, который выглядит фантастически, за исключением того, что на данном этапе потребуется много работы, так как вам нужно определить все файлы .proto.

Возможно, кто-то, использующий одно из вышеперечисленных или что-то еще, захочет прокомментировать.


person wal    schedule 18.08.2010    source источник
comment
почему kbrimington появляется как «отредактированный»?   -  person wal    schedule 18.08.2010
comment
ответ) вы добавили тег я вижу. спасибо   -  person wal    schedule 18.08.2010


Ответы (3)


С тех пор я узнал, что protobuf-net будет учитывать атрибуты [DataContract] и [DataMember] (не требуется .protos), поэтому, если ваши классы готовы к WCF или вы хотите украсить их вышеупомянутыми атрибутами, вы можете использовать protobuf-net out коробки для ваших занятий.

Некоторая работа, очевидно, требуется для украшения всех ваших классов (v1 protobuf требует этого), однако я понимаю, что v2 сможет построить модель для ваших недекорированных классов.

person wal    schedule 20.08.2010

Для обработки обратной совместимости: используйте любой из IFormatter.Binder, ISerializationSurrogate, OptionalFieldAttribute, IDeserializationCallback API.

Для скорости: попробуйте FastBinaryFormatter Gramma.Serialization, замену BinaryFormatter, реализующую IFormatter с соблюдением всех стандартных Конструкции сериализации .NET, включая упомянутые выше.

person grammophone    schedule 27.03.2014

Также есть Proto# и dotnet-protobufs.

person Darin Dimitrov    schedule 18.08.2010
comment
Они также требуют значительных начальных накладных расходов для запуска (определения .proto). - person wal; 18.08.2010
comment
В образце, данном для Proto#, я не вижу никаких определений .proto. - person Darin Dimitrov; 18.08.2010
comment
ах, извините, вчера я посмотрел на Proto, он в альфа-версии и не готов к производству. - person wal; 18.08.2010