Gute Nachrichten für Entwicklerinnen und Entwickler browserseitiger Apps: ASP.NET Core gRPC Apps lassen sich bald mit gRPC-Web auch im Browser aufrufen. Bislang war es schwierig, den gRPC-Protokollstandard HTTP/2 im Browser zu nutzen, da die notwendigen Schnittstellen nicht feingranular genug waren. gRPC-Web ist mit HTTP/1.1 und mit HTTP/2 kompatibel: Für .NET Blazor WebAssembly Apps und JavaScript SPAs wird dies eine erhebliche Verbesserung darstellen. Allerdings handelt es sich bei gRPC-Web aktuell noch um ein experimentelles Projekt, dessen dauerhafte Pflege offen ist.
Bei gRPC-Web handelt es sich keineswegs um eine neue Technologie: einen stabilen JavaScript-Client für gRPC-Web gibt es schon länger, auch einen Proxy für die Kommunikation zwischen gRPC und gRPC-Web gab es bereits. Neu ist hingegen, dass die experimentellen Pakete nun gRPC-Web direkt unterstützen, ein Proxy ist nicht mehr nötig. Der .NET-Core-gRPC-Client kann gRPC-Web-Dienste somit direkt aufrufen.
Nutzung von ASP.NET Core gRPC Apps im Browser
Folgende gRPC-Features sind mit dem experimentellen Package für gRPC-Web ab sofort verfügbar: stark typisierte code-generierte Clients, kompakte Protobuf-Nachrichten und das Streamen vom Server. Einige Server wie IIS and Azure App Service sind aktuell noch nicht in der Lage, gRPC-Dienste zu hosten. .NET-Core-Plattformen können gRPC-Dienste wie Blazor WebAssembly und Xamarin mit Hilfe von gRPC-Web aufrufen. gRPC-Web könnte ein wesentlicher Schritt in Richtung Plattformunabhängigkeit sein und ist für die genannten Probleme eine attraktive Alternative.
gRPC-Web erfordert keine großen Änderungen: In der Startup-Datei (Startup.cs) muss eine Referenz zum Grpc.AspNetCore.Web-Paket gesetzt werden.
public void ConfigureServices(IServiceCollection services)
{
services.AddGrpc();
}
public void Configure(IApplicationBuilder app)
{
app.UseRouting();
// Add gRPC-Web middleware after routing and before endpoints
app.UseGrpcWeb();
app.UseEndpoints(endpoints =>
{
endpoints.MapGrpcService().EnableGrpcWeb();
});
}
Die Vorschau-Pakete für ASP.NET Core und für den .NET Web Client stehen auf NuGet zum Download bereit. Es gibt ein Tutorial zur Nutzung von gRPC-Web mit .NET sowie eine Dokumentation für gRPC-Web unter .NET Core . Auch zum Aufsetzen des gRPC-Web-Clients für JavaScript SPAs gibt es eine Anleitung. Für die Nutzung von gRPC-Web mit Blazor WebAssembly steht eine ausführliche Erläuterung im Blog des Entwicklers Steve Sanderson. Mehr zu gRPC erfahren Sie in unserem Interview mit Thomas Bandixen vor der BASTA!-Konferenz 2019.