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