Я просто пытаюсь ответить на этот вопрос сам.
Проект protobuf-net Марка Гравелла работал с F # "из коробки", потому что он использует стандартные .NET идиомы. Вы можете использовать атрибуты, чтобы получить сериализацию без необходимости писать файлы .proto, выполнять двухэтапную компиляцию или генерировать необходимый код из стандартных файлов .proto. Производительность хороша для .NET, но намного медленнее, чем у таких альтернатив, как встроенный модуль OCaml Marshal
. Однако эта библиотека заставляет вас изменять каждое поле в каждом типе сообщения. Это действительно контрпродуктивно, потому что сообщения должны быть неизменными. Кроме того, документация оставляет желать лучшего, но тогда это бесплатное программное обеспечение.
Мне не удалось заставить библиотеку Jon Skeet protobuf-csharp-port работать вообще.
В идеале вы должны иметь возможность сериализовать все встроенные типы F # (кортежи, записи, объединения, списки, наборы, карты и т. Д.) В этот формат проводов без дополнительных настроек, но не из существующих решений с открытым исходным кодом способны на это. Я также обеспокоен сложностью этих решений: у Джона Скита 88 000 строк кода на C # и комментариев (!).
Кроме того, я разочарован тем, что буферы протокола Google не задают стандартные форматы для чисел DateTime
или decimal
.
Я еще не смотрел Proto # и даже не могу найти загрузку для Froto. Существует также ProtoParser , но он просто анализирует файлы .proto и не может ничего сериализовать.