Nos complace anunciar el soporte experimental para gRPC-Web con .NET. gRPC-Web le permite llamar a gRPC desde aplicaciones basadas en navegador como JavaScript SPA o aplicaciones Blazor WebAssembly.gRPC-Web para .NET promete traer muchas funciones geniales de gRPC a las aplicaciones del navegador:- Clientes generados estrictamente por código
- Puestos de Protobuf compactos
- Streaming del servidor

¿Qué es gRPC-Web?
No es posible implementar la especificación gRPC HTTP / 2 en un navegador porque no hay una API de navegador con suficiente control detallado sobre las solicitudes HTTP. gRPC-Web resuelve este problema al ser compatible con HTTP / 1.1 y HTTP / 2.gRPC-Web no es una tecnología nueva. Hay un cliente estable de JavaScript gRPC-Web , así como un proxy para la traducción entre gRPC y gRPC-Web para servicios. Los nuevos paquetes experimentales permiten que la aplicación ASP.NET Core gRPC admita gRPC-Web sin un servidor proxy y permite que el cliente .NET Core gRPC invoque los servicios gRPC-Web. (¡Ideal para aplicaciones Blazor WebAssembly!)Nuevas funciones con gRPC-Web
- Llame a las aplicaciones ASP.NET Core gRPC desde un navegador: las API del navegador no pueden llamar a gRPC HTTP / 2. gRPC-Web ofrece una alternativa compatible.
- JavaScript SPA
- Aplicaciones de ensamblaje web .NET Blazor
- Hospede aplicaciones ASP.NET Core gRPC en IIS y Azure Application Service. Algunos servidores, como IIS y Azure Application Service, actualmente no pueden alojar servicios gRPC. Mientras trabajan activamente en ello, gRPC-Web ofrece una alternativa interesante, que hoy funciona en cualquier entorno.
- Llame a gRPC desde plataformas que no sean .NET Core. Algunas plataformas .NET
HttpClient
no son compatibles con HTTP / 2. gRPC-Web se puede utilizar para invocar servicios gRPC en estas plataformas (por ejemplo, Blazor WebAssembly, Xamarin).
Tenga en cuenta que gRPC-Web es de bajo rendimiento y dos funciones de gRPC ya no son compatibles: transmisión de cliente y transmisión bidireccional. (¡la transmisión al servidor todavía es compatible!)Instrucciones del servidor web GRPC
Si aún no ha estudiado gRPC en .NET, aquí hay un tutorial simple para que pueda comenzar .gRPC-Web no requiere ningún cambio en sus servicios, la única modificación es la configuración inicial. Para habilitar gRPC-Web con el servicio ASP.NET Core gRPC, agregue el enlace al paquete Grpc.AspNetCore.Web . Configure la aplicación para usar gRPC-Web, agregar AddGrpcWeb(...)
y UseGrpcWeb()
el archivo de inicio: Startup.cspublic void ConfigureServices(IServiceCollection services)
{
services.AddGrpc();
}
public void Configure(IApplicationBuilder app)
{
app.UseRouting();
// gRPC-Web
app.UseGrpcWeb();
app.UseEndpoints(endpoints =>
{
endpoints.MapGrpcService<GreeterService>().EnableGrpcWeb();
});
}
Llamar a gRPC-Web desde un navegador puede requerir una configuración adicional, por ejemplo, configurar una aplicación para admitir CORS.Instrucciones de GRPC-Web Client
El cliente gRPC-Web JavaScript tiene instrucciones para configurar el cliente gRPC-Web para su uso en el navegador JavaScript SPA.Llamar a gRPC-Web con un cliente .NET es similar al gRPC normal, el único cambio es la forma en que se crea el canal. Para habilitar gRPC-Web, agregue el enlace al paquete Grpc.Net.Client.Web . Configure el canal para usar GrpcWebHandler
:// gRPC-Web
var handler = new GrpcWebHandler(GrpcWebMode.GrpcWebText, new HttpClientHandler());
var channel = GrpcChannel.ForAddress("https://localhost:5001", new GrpcChannelOptions
{
HttpClient = new HttpClient(handler)
});
var client = Greeter.GreeterClient(channel);
var response = await client.SayHelloAsync(new GreeterRequest { Name = ".NET" });
Para ver gRPC-Web con .NET en acción, lea la mejor publicación de blog de nuestro colega que usó gRPC-Web en Blazor WebAssembly .Pruebe gRPC-Web con ASP.NET Core hoy
Vista previa de paquetes en NuGet:Puede encontrar documentación sobre el uso de gRPC-Web con .NET Core aquí .Nota: mientras que gRPC-Web para .NET es solo un proyecto piloto, no un producto compatible.