对于新的 .net 核心应用程序,我应该在 protobuf-net 和 google.protobuf 之间使用什么 NuGet 包?

What NuGet package should I use between protobuf-net and google.protobuf for a new .net core app?

对于新的 .net 核心应用程序,我应该在 protobuf-net 和 google.protobuf 之间使用什么 NuGet 包?

经过编辑,这变得更容易回答;首先让我们考虑选项 shown here,加上 Google 实现, 在问题约束的上下文中 :

  1. Google.Protobuf - 参考实现
  • + 扎实、可靠,well-maintained
  • - 从根本上说“合同优先”(非托管 parser/generator),仅限 proto3
  1. protobuf-csharp-port
  • - 严格来说是 legacy,这实际上 变成了 Google.Protobuf不使用
  1. SilentOrbit/protobuf
  • - 从根本上说“合同第一”(管理 parser/generator)
  • (老实说,我对这个了解不多,所以我不会发表太多赞成或反对的评论)
  1. protobuf-net
  • +“代码优先”或“合同优先”(可选托管 parser/generator)
  • + “代码优先”可用于任何 .NET 语言; .proto 模式可以从代码生成以用于任何其他 platform/language(标记为 + 因为根据问题,这是一个 non-essential 很不错)
  • + 合理 保养得很好(这不是我的日常工作,但我努力了!)

所以;鉴于问题是:

It is for "Code first", not contract first.

这似乎变成了一个非常简单的选择过程,protobuf-net 是那场比赛中唯一的一匹马。在 .NET Core 方面:protobuf-net 与 .NET Core 完全同步,包括针对 span API 和 looking ahead to .NET 5 / C# 9 features.

进行了优化

附带说明:如果您开始 green-field,我 建议使用 protobuf-net 的 v3 版本并使用 the highest currently defined CompatibilityLevel