注意到有一个Grpc.Core nuget package v2.23.0 。几个月前,我使用了(我认为是最新软件包) v1.22.0 。选中GRPC releases,最新版本为v1.23.1。我希望Grps.Core对应于grpc版本。
为什么将版本更改为2。。。 ?有什么重大变化吗?
答案 0 :(得分:3)
为什么将版本更改为2 ...?
因为它是针对.NET的重大更改。
有什么重大变化吗?
是-对于一些用户。有两个重大更改:
System.Collections.Generic.IAsyncEnumerator<T>
到System.Interactive.Async
的引用已被删除ChannelBase
第一个更改是因为IAsyncEnumerator<T>
现在是标准库的一部分,但它与System.Interactive.Async
中的版本不同。基本上,旧版本的Grpc.Core / Grpc.Core.Api不能很好地发挥这种作用。
第二项更改是为了在纯.NET实现(Grpc.Net.Common
等)和现有的Google实现(Grpc.Core)之间提供更好的通用性。
许多用户-尤其是那些不使用流通话的用户-都可以重建。如果您确实使用流式调用,尤其是通过IAsyncEnumerator<T>
抽象了它们,则可能需要做一些工作才能升级。
重要的是要注意,如果您使用的是依赖于Grpc.Core 1.x的任何依赖项,则在相同的项目中您不能 使用Grpc.Core 2.x,直到这些依赖项为止已更新。 (例如,当前所有Google Cloud客户端库都依赖1.x。我们计划在2019年底之前采用主要版本,然后再依赖2.x。)
proposal L57中有详细信息。
答案 1 :(得分: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 实现。