0

我一直在研究一个示例应用程序,以在客户端流模式下实现从客户端(.Net 框架或 .Net Core 2.1)到 gRPC 服务器(.Net Core 3.1)的 gRPC 通信。我读过很多次,使用 gRPC web,只有一元和服务器流是可能的。

但是,当我使用 Grpc.Net.Client.Web Nuget 包实现 gRPC Web 客户端时,我可以看到客户端流是可能的。我的 gRPC 服务器是启用了 gRPCWeb 的 Asp.NetCore 3.1 项目。

服务器端:

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            app.UseRouting();
            *app.UseGrpcWeb();*
            app.UseEndpoints(endpoints =>
            {
                endpoints.MapGrpcService<GreeterService>();
                endpoints.MapGrpcService<ClientStreamingExampleService>()*.EnableGrpcWeb();*

                endpoints.MapGet("/", async context =>
                {
                    await context.Response.WriteAsync("Communication with gRPC endpoints must be made through a gRPC client. To learn how to create a client, visit: https://go.microsoft.com/fwlink/?linkid=2086909");
                });
            });
        }

客户端:

 var channel = GrpcChannel.ForAddress("https://localhost:5001", new GrpcChannelOptions
            {
                HttpHandler = new GrpcWebHandler(new HttpClientHandler() { UseProxy = false })
            })  ;
          

            var client = new clientstreamingexampleClient(channel);
            var dataRequest = client.SendData();
            foreach (var name in new[] { "text11", "text12", "text13", "text14", "text15" })
            {
                await dataRequest.RequestStream.WriteAsync(new MyDataStreamRequest { Name = name });
            }

如果我的理解有问题,请帮助我。

4

0 回答 0