Буферы протокола Google в С#

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

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

Ответы

Ответ 1

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

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

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

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