Совместим ли сгенерированный двоичный файл protobuf-net со спецификациями Google? - PullRequest
2 голосов
/ 09 апреля 2010

На самом деле я хочу сериализовать свои данные, используя реализацию Java Google, а затем десериализовать, используя реализацию C #?
Я выбрал protobuf-net, так как он кажется более стабильным (proto # по-прежнему v0.9 или я бы пошел на это). Перед тем, как начать работать над этим, я хотел быть уверен, что смогу достичь этого (сериализация данных с использованием реализации Java и десериализация с использованием protobuf-net). Или есть какой-нибудь список методов, специфичных для реализации protobuf-net?

Ответы [ 2 ]

2 голосов
/ 10 апреля 2010

Если вам нужен один и тот же API на нескольких платформах, реализация Jon Skeet может быть более подходящей для вас. Разница в том, что protobuf-net разработан на основе общих шаблонов разработки на C #, например, он не требует использования сгенерированных типов (вы можете использовать свои собственные, точно так же, как вы можете использовать DataContractSerializer, XmlSerializer и т. Д.) - и он поддерживает некоторые концепции BCL напрямую.

Оба должны быть на 100% совместимы на проводе, но вот некоторые API различия:

  • прямая поддержка DateTime, TimeSpan, Guid и т. Д. (Описано в контрактах в bcl.proto в zip)
  • поддержка наследования (отображается как вложенные данные на проводе)
  • поддержка ваших собственных типов
  • поддержка изменяемых типов (вместо пары "строитель / неизменяемая")
  • поддержка обратного вызова сериализации
  • (возможно, несколько других - вам нужен полный список на 100%?)

То, что вы, скорее всего, заметите, это наследование. Просто: не используйте это, если вы планируете использовать взаимодействие. Я попытался сделать это очень явно в intellisense, если вы делаете что-то, что будет использовать специфические трюки .NET, но если вы начинаете с .proto, он не будет использовать эти в любом случае (это должно быть портативный дружественный).

0 голосов
/ 09 апреля 2010

Все сериализации google совместимы по проводам, и хотя protobuf-net не написан Google, он утверждает, что он совместим по проводам .

Кроме того, есть страница совместимых API C #, связанная с документацией Google.

...