ASP.NET gRPC Services für browserbasierte Apps

Experiment: .NET gRPC Services direkt im Browser mit gRPC-Web
Keine Kommentare

ASP.NET gRPC Services werden browsertauglich: gRPC-Web für .NET soll die wichtigsten Features von gRPC für Browser-Anwendungen verfügbar machen, die als JavaScript SPAs oder mit Blazor WebAssembly erstellt wurden.

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.

Unsere Redaktion empfiehlt:

Relevante Beiträge

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu:
X
- Gib Deinen Standort ein -
- or -