Альтернатива protobuf-net - сериализатор, эффективный по размеру и времени, для работы с графом объектов

Google protobuf - отличный протокол для эффективной сериализации объектов, но он только поддерживает сериализацию деревьев, а не графиков (отсутствие полного отслеживания ссылок на объекты) ).

Реализации идеи Google в .NET немного. (т.е. protobuf-csharp-port или protosharp ), но наиболее интересным является protobuf-net .

Protobuf-net лучше, потому что его архитектура соответствует миру .NET, и имеет несколько надстроек (не всегда совместимых с исходным protobuf, но очень полезных).

Одной из этих надстроек является возможность включить отслеживание ссылок (опция AsReference), что позволяет сериализовать сложные графики даже с циклами.

Ненужная Protobuf-net v2 находится в бета-версии, а опция AsReference не работает в реальных сценариях . (без этой опции все работает хорошо, но без ссылки Tracikng protobuf-net не может сериализовать графики и больше не является привлекательным сериализатором).

В нем все еще есть некоторые ошибки:

Итак, я не могу использовать это отличный инструмент, и я ищу альтернативный сериализатор, который:

  • работает как минимум так же быстро и производит небольшой вывод, как protobuf
  • , который легко адаптировать к текущему проекту, например protobuf-net
  • позволяет сериализовать граф, такой как DataContractSerializer с PreserveObjectReferences, установленным в значение true
  • стабильно не только для простых объектов, но и для сложных сценариев реального мира

11
задан Community 23 May 2017 в 11:45
поделиться