Verwenden von gRPC in Browser-Apps

Von James Newton-King

Es ist nicht möglich, einen gRPC-Dienst direkt in einem Browser aufzurufen. gRPC nutzt HTTP/2-Features, und kein Browser bietet das für die Unterstützung eines gRPC-Clients erforderliche Maß an Kontrolle über Webanforderungen.

gRPC für ASP.NET Core bietet zwei browserkompatible Lösungen: gRPC-Web und gRPC JSON-Transcodierung.

gRPC-Web

Mit gRPC-Web können Browser-Apps gRPC-Dienste mithilfe des gRPC-Web-Clients und mithilfe von Protobuf aufrufen.

  • Es ist mit der normalen Variante von gRPC vergleichbar, verfügt jedoch über ein etwas anderes Wire-Protokoll, wodurch es mit HTTP/1.1 und Browsern kompatibel ist.
  • Erfordert die Generierung eines gRPC-Clients auf der Grundlage einer Datei vom Typ .proto durch die Browser-App.
  • Browser-Apps können von der hohen Leistung und der geringen Netzwerkauslastung binärer Nachrichten profitieren.

.NET bietet integrierte Unterstützung für gRPC-Web. Weitere Informationen finden Sie unter gRPC-Web in ASP.NET Core gRPC-Apps.

gRPC JSON Transcodierung

gRPC JSON-Transcodierung ermöglicht es Browser-Apps, gRPC-Dienste so aufzurufen, als wären es RESTful-APIs mit JSON.

  • Die Browser-App muss keinen gRPC-Client generieren und benötigt keine Informationen zu gRPC.
  • RESTful-APIs werden automatisch auf der Grundlage von gRPC-Diensten erstellt, indem die .proto-Datei mit HTTP-Metadaten ergänzt wird.
  • Ermöglicht es einer App, sowohl gRPC- als auch JSON-Web-APIs zu unterstützen, ohne den Aufwand durch die Entwicklung separater Dienste für beides zu verdoppeln.

.NET bietet integrierte Unterstützung für das Erstellen von JSON-Web-APIs aus gRPC-Diensten. Weitere Informationen finden Sie unter gRPC JSON-Transcodierung in ASP.NET Core gRPC-Apps.

Hinweis

Die gRPC JSON-Transcodierung erfordert mindestens .NET 7.

Zusätzliche Ressourcen