Nous sommes heureux d'annoncer la prise en charge expérimentale de gRPC-Web avec .NET. gRPC-Web vous permet d'appeler gRPC à partir d'applications basées sur un navigateur telles que JavaScript SPA ou les applications Blazor WebAssembly.gRPC-Web pour .NET promet d'apporter de nombreuses fonctionnalités gRPC intéressantes aux applications de navigateur:- Clients générés par du code strictement typés
- Poteaux compacts Protobuf
- Streaming serveur

Qu'est-ce que gRPC-Web
Il n'est pas possible d'implémenter la spécification gRPC HTTP / 2 dans un navigateur car il n'y a pas d'API de navigateur avec un contrôle détaillé suffisant sur les requêtes HTTP. gRPC-Web résout ce problème en étant compatible avec HTTP / 1.1 et HTTP / 2.gRPC-Web n'est pas une nouvelle technologie. Il existe un client JavaScript gRPC-Web stable , ainsi qu'un proxy pour la traduction entre gRPC et gRPC-Web pour les services. De nouveaux packages expérimentaux permettent à l'application ASP.NET Core gRPC de prendre en charge gRPC-Web sans serveur proxy et au client .NET Core gRPC d'appeler les services gRPC-Web. (Idéal pour les applications Blazor WebAssembly!)Nouvelles fonctionnalités avec gRPC-Web
- Appelez les applications ASP.NET Core gRPC à partir d'un navigateur - Les API de navigateur ne peuvent pas appeler gRPC HTTP / 2. gRPC-Web offre une alternative compatible.
- SPA JavaScript
- Applications d'assemblage Web .NET Blazor
- Hébergez les applications ASP.NET Core gRPC dans IIS et Azure Application Service. Certains serveurs, tels que IIS et Azure Application Service, ne sont actuellement pas en mesure d'héberger les services gRPC. Alors qu'ils y travaillent activement, gRPC-Web offre une alternative intéressante qui fonctionne aujourd'hui dans n'importe quel environnement.
- Appelez gRPC à partir de plates-formes autres que .NET Core. Certaines plates
HttpClient
- formes .NET ne prennent pas en charge HTTP / 2. gRPC-Web peut être utilisé pour appeler les services gRPC sur ces plateformes (par exemple Blazor WebAssembly, Xamarin).
Notez que gRPC-Web est peu performant et que deux fonctionnalités gRPC ne sont plus prises en charge: le streaming client et le streaming bidirectionnel. (le streaming sur le serveur est toujours supporté!)Instructions du serveur GRPC-Web
Si vous n'avez pas encore étudié gRPC dans .NET, voici un didacticiel simple pour que vous puissiez commencer .gRPC-Web ne nécessite aucune modification de vos services, la seule modification est la configuration initiale. Pour activer gRPC-Web avec le service gRPC ASP.NET Core, ajoutez le lien vers le package Grpc.AspNetCore.Web . Configurez l'application pour utiliser gRPC-Web, l'ajout AddGrpcWeb(...)
et UseGrpcWeb()
le fichier de démarrage: 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();
});
}
L'appel de gRPC-Web à partir d'un navigateur peut nécessiter une configuration supplémentaire, par exemple, la configuration d'une application pour prendre en charge CORS.Instructions pour le client GRPC-Web
Le client JavaScript gRPC-Web contient des instructions pour configurer le client gRPC-Web à utiliser dans le navigateur JavaScript SPA.Appeler gRPC-Web avec un client .NET est similaire à gRPC standard, le seul changement est la façon dont le canal est créé. Pour activer gRPC-Web, ajoutez le lien vers le package Grpc.Net.Client.Web . Configurez le canal à utiliser 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" });
Pour voir gRPC-Web avec .NET en action, lisez le billet de blog le plus cool de notre collègue qui a utilisé gRPC-Web dans Blazor WebAssembly .Essayez gRPC-Web avec ASP.NET Core dès aujourd'hui
Aperçu des packages sur NuGet:Vous pouvez trouver de la documentation sur l'utilisation de gRPC-Web avec .NET Core ici .Remarque: bien que gRPC-Web pour .NET ne soit qu'un projet pilote, pas un produit pris en charge.