4

注意到有一个Grpc.Core nuget 包 v2.23.0。几个月前,我使用(我认为是最新的软件包)v1.22.0。检查GRPC 版本,现在最新的是 v1.23.1。我希望 Grps.Core 对应 grpc 版本。

为什么版本改成2 .. . ? 有什么重大变化吗?

在此处输入图像描述

4

2 回答 2

4

为什么版本更改为 2... ?

因为它发生了重大变化,仅针对 .NET。

有什么重大变化吗?

是的 - 对于某些用户。有两个重大变化:

  • System.Collections.Generic.IAsyncEnumerator<T>对(from )的引用System.Interactive.Async已被删除
  • ChannelBase引入了一个新的基类

这些更改中的第一个是因为IAsyncEnumerator<T>现在是标准库的一部分,但它与System.Interactive.Async. 基本上旧版本的 Grpc.Core / Grpc.Core.Api 不能很好地配合它。

第二个更改是为了在纯 .NET 实现 ( Grpc.Net.Commonetc) 和现有的 Google 实现 (Grpc.Core) 之间提供更好的通用性。

许多用户——尤其是那些不使用流式呼叫的用户——将能够重建。如果您确实使用流式调用,特别是如果您已经通过 抽象了它们IAsyncEnumerator<T>,您可能需要做一些工作来升级。

请务必注意,如果您使用的任何依赖项又依赖于 Grpc.Core 1.x,则在这些依赖项更新之前,您不能在同一项目中使用 Grpc.Core 2.x。(例如,目前所有的 Google Cloud 客户端库都依赖于 1.x。我们计划在 2019 年底之前自行推出一个主要版本,然后依赖于 2.x。)

提案 L57中有详细说明。

于 2019-10-01T08:16:29.473 回答
0

对于那些想知道如何将 gRPC .NET 版本与 gRPC 核心版本进行比较的人,@JonSkeets 的答案中提到的提案的这段摘录应该会有所帮助。

因此,我们将同时进行这两项更改,并将下一个 gRPC C# 版本发布为 v2.23.0(而不是 v1.23.0)。

我们选择了 v2.23.0 版本而不是 v2.0.0 版本,这样次要版本号仍然可以用于比较给定版本相对于所有其他 gRPC 实现的年龄。例如 gRPC C# 2.24.x 将与 gRPC C++ 1.24.x 一起发布。

在 gRPC C# 版本 2.x 和 1.x 之间没有提议更改协议 - 这两个版本将可以相互完全互操作,也可以与所有其他 gRPC 实现互操作。

于 2021-01-07T15:28:56.400 回答