2010-10-11 1 views
14

Мы изучаем использование протокольных буферов Google для обработки сериализации между приложением C++ и приложением C# через сеть.Буферы протокола Google в C#

Мой вопрос: я нашел пару различных версий для C#. Оба выглядят довольно хорошо, однако, кто-нибудь знает, что отличается (если что-нибудь) между двумя

  1. protobuf-net
  2. jskeet/dotnet-protobufs
+7

Первый написан [Marc Gravell] (http://stackoverflow.com/users/23354/marc-gravell) (занимает 2 место в репутации здесь), а второй написан [Jon Skeet] (http://stackoverflow.com/users/22656/jon-skeet) (занял 1 место в рейтинге здесь). Несмотря на то, что я никогда не использовал ни одного из них, я бы сказал, что вы не ошибетесь в любом случае. –

+2

Учитывая, что Джон Скит работает в Google, я сначала попробую его версию. – Gabe

+3

Но что лучше? Есть только один способ узнать ... БОРЬБА! (это может иметь смысл, если вы знаете, кто такой Гарри Хилл - иначе это может показаться необычайно агрессивным ...) –

ответ

13

Sure; dotnet-protobufs - это порт версии java, поэтому имеет очень похожий API и подход к основной реализации google; код-жемчуг, неизменность и т. д.

Protobuf-net байт совместим, но является полной версией с нуля, следуя стандартным .NET-идиомам - так знакомы пользователям XmlSerializer и т. д. Он также работает против изменчивых объекты (и неизменны в зависимости от настройки, и структуры в v2), а также имеет дополнительные крючки для WCF, удаленного доступа и т.д.

Оба они могут работать от .proto (возможно, DotNet-protobufs является лучше в этом, чем protobuf- сеть); но protobuf-net может работать против существующих .net poco/DTO и т. д. без .proto или любого кодегена.

Кроме того, protobuf-net предлагает такие функции, как поддержка наследования, но вы не можете использовать его в своем сценарии, поскольку он не так легко сопоставляется с определениями .proto.