Версия Jon's в значительной степени представляет собой порт версии Java, поэтому имеет очень похожий подход к API и дизайну. Это также AFAIK полностью контракт-первый, то есть от .proto.
Моя версия приходит на это больше с точки зрения .NET, глядя на то, что распространено в .NET-сериализаторах - такие изменчивые объекты, модифицируются существующими типами, сначала кодовыми (хотя это может все еще делает код-gen из .proto, если хотите) и т. д. Он может даже вывести данные из атрибутов, используемых XmlSerializer
, и DataContractSerializer
для совместной работы с существующим кодом и может подключаться как к удаленному (через ISerializable
), так и к WCF (через атрибуты или конфигурации). Таким образом, он глубоко внедрен в экосистему .NET. Я также включаю поддержку наследования (так как это так распространено в других сериализаторах .NET), но это немного нереально, чтобы сопоставить другие платформы, поскольку он не имеет прямого представления в .proto.
Бинарные данные должны быть идентичными; это в значительной степени точка формата; p Это в значительной степени выбор того, какой API может быть более подходящим для вас.
Для ваших нужд, работая бок о бок с C++ и Java-кодом в той же системе и с существующими определениями .proto, я предлагаю вам вариант Jon's, наиболее подходящий для вас.
Если, однако, вы делаете .NET только или делают .NET с Interop с внешнего кода (т.е. не все равно, что язык «другая сторона» использует, так как у вас есть только беспокоиться о своем собственном коде), то IMO protobuf-net может быть довольно безболезненным способом потребления данных; особенно, если у вас есть существующая система, которую теперь вы хотите сериализовать (или: сериализовать быстрее/меньше).
Спасибо Marc. Мы использовали вашу версию с первого дня, но искали некоторые пояснения, особенно, когда все больше команд начали использовать библиотеки. –
@ Ray затем продолжайте использовать его и наслаждайтесь; p –