Если вам нужен один и тот же API на нескольких платформах, реализация Jon Skeet может быть более подходящей для вас. Разница в том, что protobuf-net разработан на основе общих шаблонов разработки на C #, например, он не требует использования сгенерированных типов (вы можете использовать свои собственные, точно так же, как вы можете использовать DataContractSerializer
, XmlSerializer
и т. Д.) - и он поддерживает некоторые концепции BCL напрямую.
Оба должны быть на 100% совместимы на проводе, но вот некоторые API различия:
- прямая поддержка
DateTime
, TimeSpan
, Guid
и т. Д. (Описано в контрактах в bcl.proto в zip)
- поддержка наследования (отображается как вложенные данные на проводе)
- поддержка ваших собственных типов
- поддержка изменяемых типов (вместо пары "строитель / неизменяемая")
- поддержка обратного вызова сериализации
- (возможно, несколько других - вам нужен полный список на 100%?)
То, что вы, скорее всего, заметите, это наследование. Просто: не используйте это, если вы планируете использовать взаимодействие. Я попытался сделать это очень явно в intellisense, если вы делаете что-то, что будет использовать специфические трюки .NET, но если вы начинаете с .proto, он не будет использовать эти в любом случае (это должно быть портативный дружественный).