对于新的.net核心应用程序,在protobuf-net和google.protobuf之间应该使用哪个NuGet软件包?

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

  • 这是“代码优先”,而不是合同第一。
  • 它实际上仅适用于C#,但是如果有更多的语言可以轻松地阅读格式但不是必须的话,那就太好了。对于二进制序列化,我会优先考虑性能而不是可移植性。我还将使用XML或Json来实现可移植性(我认为它更适合于可移植性,尽管速度慢得多)。
hzhgch 回答:对于新的.net核心应用程序,在protobuf-net和google.protobuf之间应该使用哪个NuGet软件包?

通过编辑,这将变得更容易回答;首先让我们考虑选项shown here以及Google实现,在问题约束条件范围内

  1. Google.Protobuf-参考实现
  • +牢固,可靠,维护良好
  • -基本上是“合同第一”(非托管解析器/生成器),仅适用于proto3
  1. protobuf-csharp-port
  • -完全遗留,实际上有效地成为了(em) Google.Protobuf请勿使用
  1. SilentOrbit/protobuf
  • -基本上是“合同第一”(托管解析器/生成器)
  • (老实说,我对此一无所知,因此我不会对此发表太多评论或反对)
  1. protobuf-net
  • +“先编码”或“先合同”(可选的托管解析器/生成器)
  • +“代码优先”可用于任何.NET语言;可以从代码中生成.proto模式,以用于任何其他平台/语言(标记为+,因为根据问题,这是一个不必要的好东西)
  • + 合理维护良好(这不是我的日常工作,但我会尝试!)

所以;鉴于问题是这样的:

这是“代码优先”,而不是合同第一。

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

请注意:如果您要开始绿地,我建议使用protobuf-net的v3版本并使用the highest currently defined CompatibilityLevel

本文链接:https://www.f2er.com/1395784.html

大家都在问