对于新的.net核心应用程序,我应该在protobuf-net和google.protobuf之间使用哪个NuGet软件包?
- 这是“代码优先”,而不是合同第一。
- 它实际上仅适用于C#,但是如果有更多的语言可以轻松地阅读格式但不是必须的话,那就太好了。对于二进制序列化,我会优先考虑性能而不是可移植性。我还将使用XML或Json来实现可移植性(我认为它更适合于可移植性,尽管速度慢得多)。
对于新的.net核心应用程序,我应该在protobuf-net和google.protobuf之间使用哪个NuGet软件包?
通过编辑,这将变得更容易回答;首先让我们考虑选项shown here以及Google实现,在问题约束条件范围内 :
Google.Protobuf
-参考实现+
牢固,可靠,维护良好-
基本上是“合同第一”(非托管解析器/生成器),仅适用于proto3 protobuf-csharp-port
-
完全遗留,实际上有效地成为了(em) Google.Protobuf
; 请勿使用 SilentOrbit/protobuf
-
基本上是“合同第一”(托管解析器/生成器)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