对于新的 .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 包?
- 这是为了“代码优先”,而不是合同优先。
- 它实际上只适用于 C#,但如果更多语言可以轻松阅读格式但不是必须的,那就太好了。对于二进制序列化,我更喜欢性能而不是可移植性。我还将使用 XML 或 Json 来实现可移植性(我认为这更适合可移植性,尽管速度要慢得多)。
经过编辑,这变得更容易回答;首先让我们考虑选项 shown here,加上 Google 实现, 在问题约束的上下文中 :
Google.Protobuf
- 参考实现
+
扎实、可靠,well-maintained
-
从根本上说“合同优先”(非托管 parser/generator),仅限 proto3
protobuf-csharp-port
-
严格来说是 legacy,这实际上 变成了 Google.Protobuf
; 不使用
SilentOrbit/protobuf
-
从根本上说“合同第一”(管理 parser/generator)
- (老实说,我对这个了解不多,所以我不会发表太多赞成或反对的评论)
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
对于新的 .net 核心应用程序,我应该在 protobuf-net 和 google.protobuf 之间使用什么 NuGet 包?
- 这是为了“代码优先”,而不是合同优先。
- 它实际上只适用于 C#,但如果更多语言可以轻松阅读格式但不是必须的,那就太好了。对于二进制序列化,我更喜欢性能而不是可移植性。我还将使用 XML 或 Json 来实现可移植性(我认为这更适合可移植性,尽管速度要慢得多)。
经过编辑,这变得更容易回答;首先让我们考虑选项 shown here,加上 Google 实现, 在问题约束的上下文中 :
Google.Protobuf
- 参考实现
+
扎实、可靠,well-maintained-
从根本上说“合同优先”(非托管 parser/generator),仅限 proto3
protobuf-csharp-port
-
严格来说是 legacy,这实际上 变成了Google.Protobuf
; 不使用
SilentOrbit/protobuf
-
从根本上说“合同第一”(管理 parser/generator)- (老实说,我对这个了解不多,所以我不会发表太多赞成或反对的评论)
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