c# - 是否可以在 .NET Core 中将 gRPC 与 HTTP/1.1 一起使用?

标签 c# asp.net-core grpc http2 http-1.1

我有两个网络服务 - gRPC 客户端和 gRPC 服务器。服务器是用 .NET Core 编写的, hence HTTP/2 for gRPC is enforced 。但是,客户端是托管在 IIS 8.5 so it only supports HTTP/1.1 上的 .NET Framework 4.7.2 Web 应用程序。

由于升级客户端需要一些时间,我在想是否可以在服务器端使用 HTTP/1.1 而不是 HTTP/2,但我找不到任何有关如何实现的信息。

.NET Core 编写的 gRPC 服务器是否可以使用 HTTP/1.1?如果是这样 - 如何?

最佳答案

不,您不能在 HTTP 1.1 上使用 gRPC;但是,您可以使用 Grpc.Core Google 传输实现,而不是托管的 Microsoft 位;这针对 .NET Standard 1.5 和 .NET Standard 2.0,因此应该适用于 .NET Core,并使用特定于操作系统的非托管二进制文件 (chttp2) 进行传输。

对于客户端,两者几乎没有区别;只有实际的 channel 创建变化,在:

GrpcChannel.ForAddress(...)

使用 Microsoft 传输,以及
new Channel(...)

与谷歌传输。所有其余的 API 都是共享的(在 Grpc.Core.Api 中)

关于c# - 是否可以在 .NET Core 中将 gRPC 与 HTTP/1.1 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59770763/

相关文章:

c# - 从最新到最旧读取事件日志

c# - .net core 中项目之间的身份验证

asp.net-core - 在控制台应用程序中使用 ASP.NET Core 3.1 读取嵌入式资源时出现问题

c# - 我不明白事件委托(delegate)的双重语法

c# - FontSize.PIXELS c# 等价物

c# - 如何正确部署托管/非托管 C++ 库

c# - Asp Core 2.1 Jwt + 身份。 userManager 存储未实现 IUserRoleStore

c++ - 预先构建grpc和find_package

go - go中的双向gRPC流实现

c++ - 将自定义传输插入gRPC