ASP.NET Core 3.0 gRPC 配置使用HTTP - Go语言中文社区

ASP.NET Core 3.0 gRPC 配置使用HTTP


前言

gRPC是基于http/2,是同时支持https和http协议的,我们在gRPC实际使用中,在内网通讯场景下,更多的是走http协议,达到更高的效率,下面介绍如何在 .NET Core 3.0 中如何为gRPC配置http。

服务端配置Kestrel

public static IHostBuilder CreateHostBuilder(string[] args) =>
    Host.CreateDefaultBuilder(args)
        .ConfigureWebHostDefaults(webBuilder =>
        {
            webBuilder.ConfigureKestrel(options =>
            {
                // Setup a HTTP/2 endpoint without TLS.
                options.ListenLocalhost(5000, o => o.Protocols =
                    HttpProtocols.Http2);
            });
            webBuilder.UseStartup<Startup>();
        });

主要是这句话 Protocols = HttpProtocols.Http2 让kestrel支持无 tls http/2

在最新的asp.net core 中,http端口默认已经配置了,所以服务端配置不是必须的

客户端

客户端需要在创建 grpc 调用以前设置:

AppContext.SetSwitch(
                "System.Net.Http.SocketsHttpHandler.Http2UnencryptedSupport", true);

示例:

AppContext.SetSwitch(
    "System.Net.Http.SocketsHttpHandler.Http2UnencryptedSupport", true);
var channel = GrpcChannel.ForAddress("http://localhost:5000");
var client = new Greeter.GreeterClient(channel);
var reply = await client.SayHelloAsync(
    new HelloRequest { Name = "晓晨" });
Console.WriteLine("调用Greeter服务 : " + reply.Message);

客户端跨语言调用非tls gRPC都需要这样设置。

相关资料: https://docs.microsoft.com/en-us/aspnet/core/grpc/troubleshoot?view=aspnetcore-3.0&WT.mc_id=DT-MVP-5003133

版权声明:本文来源博客园,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://www.cnblogs.com/stulzq/p/11697269.html
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2021-05-31 21:44:31
  • 阅读 ( 2598 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢