#c# #asp.net-core #grpc #grpc-web #grpc-dotnet
Вопрос:
Я работал над примером приложения для реализации связи gRPC от клиента(.Net framework или .Net core 2.1) на сервер gRPC(.Net Core 3.1) в режиме потоковой передачи клиента. Я много раз читал, что в gRPC web возможна только унарная и серверная потоковая передача.
Однако, когда я реализовал веб-клиент gRPC с помощью Grpc.Net.Client.Пакет Web Nuget, я вижу, что потоковая передача клиентов возможна. Мой сервер gRPC-это проект Asp.NETCore 3.1 с включенной поддержкой gRPCWeb.
На стороне Сервера:
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 });
}
Пожалуйста, помогите мне, если что-то не так с моим пониманием.
Комментарии:
1. Пожалуйста, проясните вашу конкретную проблему или предоставьте дополнительные сведения, чтобы точно указать, что вам нужно. Поскольку это написано в настоящее время, трудно точно сказать, о чем вы просите.