Ответ 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.