Мне нужен совет по сериализации в приложении .net. Приложение является настольным / толстым клиентским приложением, а сериализация представляет собой постоянный формат документа. Требования к сериализатору:
В настоящее время мы используем BinaryFormatter, который достаточно хорошо обрабатывает все вышеперечисленное, но размер / производительность и устойчивость к версии являются проблемой. Мы используем атрибуты [OnDeserialized / ing] для обеспечения совместимости, но они не допускают крупных рефакторингов (например, изменение пространства имен) без сложного использования суррогатов и т. Д.
Идеальным решением была бы прямая замена для BinaryFormatter, который работает с нашими существующими аннотациями [NonSerialized] и т. Д., Но работает лучше и создает формат, который меньше и проще в обслуживании.
Я рассмотрел различные реализации protobuf, и хотя кажется возможным сериализовать общие объектные графы / перечисления / структуры в наши дни, сериализация сложного графа с большим количеством типов коллекций фреймворков не кажется тривиальной задачей. Кроме того, даже если бы мы могли заставить его работать с полями, а не свойствами, я понимаю, что это все равно означало бы необходимость добавить конструкторы без параметров и аннотации protobuf ко всем классам (домен составляет около 1000 классов).
Итак, вопросы: