zoukankan      html  css  js  c++  java
  • Kestrel gRPC

    gRPC走http2协议,到目前我还没找到如何把gRPC server 部署在iis下。

    现在只能走Kestrel。

            public static IHostBuilder CreateHostBuilder(string[] args) =>
                Host.CreateDefaultBuilder(args)
                    .ConfigureWebHostDefaults(webBuilder =>
                    {
                        webBuilder.UseStartup<Startup>();
    
                        webBuilder.UseKestrel();
                        webBuilder.UseUrls("http://localhost:7777");
                        webBuilder.ConfigureKestrel(i =>
                        {
                            i.ConfigureEndpointDefaults(op => { op.Protocols = Microsoft.AspNetCore.Server.Kestrel.Core.HttpProtocols.Http2; });
                        });
                    });

    或者 appsettings.json 可以配置协议为http2:

      "Kestrel": {
        "Endpoints": {
          "Http": {
            "Url": "http://localhost:7777",
            "Protocols": "Http2"
          }
        }
      }
        public class Startup
        {
            public Startup(IConfiguration configuration)
            {
                Configuration = configuration;
            }
    
            public IConfiguration Configuration { get; }
    
            // This method gets called by the runtime. Use this method to add services to the container.
            public void ConfigureServices(IServiceCollection services)
            {
                services.AddControllers().AddJsonOptions(options =>
                {
                    options.JsonSerializerOptions.Converters.Add(new DateTimeConverter());
                    options.JsonSerializerOptions.Converters.Add(new DateTimeNullConverter());
                });
    
                services.AddGrpc();
                services.AddMagicOnion(i =>
                {
                    i.IsReturnExceptionStackTraceInErrorDetail = true;
                    i.SerializerOptions = MessagePackSerializerOptions.Standard.WithResolver(
                               MessagePack.Resolvers.ContractlessStandardResolverAllowPrivate.Instance);
                    i.EnableCurrentContext = true;
                });
            }
    
            // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
            public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
            {
                if (env.IsDevelopment())
                {
                    app.UseDeveloperExceptionPage();
                }
    
                app.UseHttpsRedirection();
    
                app.UseRouting();
    
                //app.UseAuthorization();
                
    
                app.UseEndpoints(endpoints =>
                {
                    //endpoints.MapControllers();
                    endpoints.MapMagicOnionService();
    
                });
            }
        }

     客户端调用:

                    AppContext.SetSwitch("System.Net.Http.SocketsHttpHandler.Http2UnencryptedSupport", true);
    
                    var channel = GrpcChannel.ForAddress("http://localhost:7777");
                    
                    var client = MagicOnionClient.Create<IUserSvc>(channel, MessagePackSerializerOptions.Standard.WithResolver(
                                   MessagePack.Resolvers.ContractlessStandardResolverAllowPrivate.Instance));
    
                    var users = await client.GetUsrs();
  • 相关阅读:
    Java_jdbc 基础笔记之六 数据库连接 (PreparedStatement)
    Java_jdbc 基础笔记之五 数据库连接 (ResultSet)
    如何在Windows Server 2008服务器中把Tomcat启动程序添加到服务中
    WebService(axis2),整合springmvc
    shiro学习
    mysql中的concat函数,concat_ws函数,concat_group函数之间的区别
    mysql几种关联的区别
    wzyxidian Scanner 与 Readable 的read()方法
    LINQ系列:LINQ to SQL Take/Skip
    LINQ系列:LINQ to SQL Concat/Union
  • 原文地址:https://www.cnblogs.com/jonney-wang/p/14053796.html
Copyright © 2011-2022 走看看