Wir freuen uns, die experimentelle Unterstützung für gRPC-Web mit .NET bekannt zu geben. Mit gRPC-Web können Sie gRPC aus browserbasierten Anwendungen wie JavaScript SPA oder Blazor WebAssembly-Anwendungen aufrufen.gRPC-Web für .NET verspricht, Browseranwendungen viele großartige gRPC-Funktionen zu bieten:- Streng typisierte Code-generierte Clients
- Kompakte Protobuf-Pfosten
- Server-Streaming

Was ist gRPC-Web?
Es ist nicht möglich, die gRPC-HTTP / 2-Spezifikation in einem Browser zu implementieren, da keine Browser-API mit ausreichender detaillierter Kontrolle über HTTP-Anforderungen vorhanden ist. gRPC-Web löst dieses Problem, indem es mit HTTP / 1.1 und HTTP / 2 kompatibel ist.gRPC-Web ist keine neue Technologie. Es gibt einen stabilen gRPC-Web-JavaScript-Client sowie einen Proxy für die Übersetzung zwischen gRPC und gRPC-Web für Dienste. Neue experimentelle Pakete ermöglichen es der ASP.NET Core gRPC-Anwendung, gRPC-Web ohne Proxyserver zu unterstützen und dem .NET Core gRPC-Client das Aufrufen von gRPC-Webdiensten zu ermöglichen. (Ideal für Blazor WebAssembly-Anwendungen!)Neue Funktionen mit gRPC-Web
- Aufrufen von ASP.NET Core-gRPC-Anwendungen über einen Browser - Browser-APIs können gRPC HTTP / 2 nicht aufrufen. gRPC-Web bietet eine kompatible Alternative.
- JavaScript SPA
- .NET Blazor Web Assembly-Anwendungen
- Hosten Sie ASP.NET Core-gRPC-Anwendungen in IIS und Azure Application Service. Einige Server, wie z. B. IIS und Azure Application Service, können derzeit keine gRPC-Dienste hosten. Während sie aktiv daran arbeiten, bietet gRPC-Web eine interessante Alternative, die heute in jeder Umgebung funktioniert.
- Rufen Sie gRPC von anderen Plattformen als .NET Core auf. Einige .NET-Plattformen
HttpClient
unterstützen HTTP / 2 nicht. Mit gRPC-Web können gRPC-Dienste auf diesen Plattformen aufgerufen werden (z. B. Blazor WebAssembly, Xamarin).
Beachten Sie, dass die Leistung von gRPC-Web gering ist und zwei gRPC-Funktionen nicht mehr unterstützt werden: Client-Streaming und Zwei-Wege-Streaming. (Streaming zum Server wird weiterhin unterstützt!)GRPC-Webserver-Anweisungen
Wenn Sie gRPC in .NET noch nicht studiert haben, finden Sie hier ein einfaches Tutorial, damit Sie loslegen können .gRPC-Web erfordert keine Änderungen an Ihren Diensten. Die einzige Änderung ist die Erstkonfiguration. Fügen Sie den Link zum Paket Grpc.AspNetCore.Web hinzu, um gRPC-Web mit dem ASP.NET Core gRPC-Dienst zu aktivieren . Konfigurieren Sie die Anwendung für die Verwendung von gRPC-Web, Hinzufügen AddGrpcWeb(...)
und UseGrpcWeb()
der Startdatei: 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();
});
}
Das Aufrufen von gRPC-Web über einen Browser erfordert möglicherweise eine zusätzliche Konfiguration, z. B. das Konfigurieren einer Anwendung zur Unterstützung von CORS.GRPC-Web Client-Anweisungen
Der gRPC-Web-JavaScript-Client enthält Anweisungen zum Einrichten des gRPC-Web-Clients zur Verwendung im JavaScript-SPA-Browser.Das Aufrufen von gRPC-Web mit einem .NET-Client ähnelt dem regulären gRPC. Die einzige Änderung ist die Art und Weise, wie der Kanal erstellt wird. Fügen Sie zum Aktivieren von gRPC-Web den Link zum Paket Grpc.Net.Client.Web hinzu . Konfigurieren Sie den zu verwendenden Kanal 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" });
Um gRPC-Web mit .NET in Aktion zu sehen, lesen Sie den coolsten Blog-Beitrag unseres Kollegen, der gRPC-Web in Blazor WebAssembly verwendet hat .Probieren Sie gRPC-Web noch heute mit ASP.NET Core aus
Vorschau von Paketen auf NuGet:Eine Dokumentation zur Verwendung von gRPC-Web mit .NET Core finden Sie hier .Hinweis: Während gRPC-Web für .NET nur ein Pilotprojekt ist, kein unterstütztes Produkt.