Na, wie geht's? Wenn Sie die neuesten Trends in der Webentwicklung verfolgt haben, haben Sie wahrscheinlich den Begriff gRPC-Web gehört. Vielleicht sind Sie ein Entwickler, der sich fragt, ob es etwas ist, das Sie in Ihre Projekte integrieren sollten. Oder vielleicht sind Sie einfach nur neugierig, worum es bei all dem Trubel geht. So oder so, Sie sind hier genau richtig. Lassen Sie uns in die Welt von gRPC-Web eintauchen, und am Ende dieses Beitrags werden Sie ein solides Verständnis dafür haben, was es ist, warum es nützlich ist und wie Sie es verwenden können.
Was ist gRPC-Web?
Zunächst einmal: Was genau ist gRPC-Web? Im Kern ist gRPC-Web eine JavaScript-Client-Bibliothek, die Webanwendungen die Kommunikation mit gRPC-Diensten ermöglicht. Es erweitert die Funktionalität von gRPC (Google Remote Procedure Call), einem Open-Source-Framework, das HTTP/2 für den Transport von Nachrichten verwendet. gRPC wurde entwickelt, um den Aufbau skalierbarer und effizienter APIs zu erleichtern.

Eine kurze Zusammenfassung zu gRPC
Bevor wir tiefer in gRPC-Web eintauchen, wollen wir uns kurz mit gRPC selbst befassen. gRPC wurde von Google entwickelt und wird häufig für die Kommunikation zwischen Microservices verwendet. Es nutzt HTTP/2, Protocol Buffers (Protobufs) und bietet Funktionen wie Authentifizierung, Load Balancing und mehr. Mit gRPC definieren Sie Ihre Servicemethoden und Nachrichtentypen mithilfe von Protocol Buffers, wodurch dann Code sowohl für den Client als auch für den Server generiert wird.
Warum gRPC-Web?
Warum brauchen wir also gRPC-Web, wenn wir bereits gRPC haben? Die Antwort liegt in den Einschränkungen von Browsern. Während gRPC hervorragend für die Kommunikation zwischen Servern geeignet ist, funktioniert es nicht direkt mit Browsern, da diese keine HTTP/2-Trailers unterstützen, auf die gRPC angewiesen ist. Hier kommt gRPC-Web ins Spiel. Es fungiert als Brücke und ermöglicht es Webanwendungen, gRPC-Dienste zu nutzen.

Die wichtigsten Vorteile von gRPC-Web
Nachdem wir nun wissen, was gRPC-Web ist, wollen wir untersuchen, warum Sie es verwenden möchten. Hier sind einige der wichtigsten Vorteile:
1. Performance
Eines der herausragenden Merkmale von gRPC-Web ist seine Performance. Dank der Verwendung von HTTP/2 und Protocol Buffers kann gRPC-Web eine hohe Anzahl von Anfragen effizient verarbeiten. Dies macht es ideal für Anwendungen, die einen Echtzeit-Datenaustausch erfordern oder mehrere gleichzeitige Verbindungen verwalten müssen.
2. Benutzerfreundlichkeit
Mit gRPC-Web können Sie dieselben Protocol-Buffer-Definitionen sowohl für Ihre Webclients als auch für Ihre Backend-Dienste nutzen. Das bedeutet, dass Sie die Konsistenz in Ihrem Anwendungs-Stack beibehalten und die Menge an Boilerplate-Code reduzieren können, den Sie schreiben müssen. Außerdem können Sie mit Tools wie Apidog Ihren API-Entwicklungsprozess noch weiter optimieren.
3. Skalierbarkeit
Da gRPC-Web HTTP/2 verwendet, profitiert es von Funktionen wie Multiplexing, wodurch mehrere Anfragen über eine einzige Verbindung gesendet werden können. Dies trägt dazu bei, den Overhead zu reduzieren, der mit dem Erstellen und Verwalten mehrerer Verbindungen verbunden ist, wodurch Ihre Anwendung skalierbarer wird.
4. Interoperabilität
gRPC-Web ermöglicht eine nahtlose Kommunikation zwischen Ihren Webanwendungen und gRPC-Diensten. Das bedeutet, dass Sie moderne Web-Apps erstellen können, die mit Ihrer bestehenden gRPC-basierten Microservices-Architektur interagieren können, ohne zusätzliche REST-APIs erstellen zu müssen.
Erste Schritte mit gRPC-Web
Okay, genug Theorie! Lassen Sie uns die Hände schmutzig machen und sehen, wie Sie gRPC-Web in Ihren Projekten verwenden können.
Voraussetzungen
Bevor Sie beginnen, stellen Sie sicher, dass Sie Folgendes installiert haben:
- Node.js
- npm oder yarn
- Protocol Buffers Compiler (
protoc
)
Schritt 1: Definieren Sie Ihren Dienst
Der erste Schritt ist die Definition Ihres gRPC-Dienstes mithilfe von Protocol Buffers. Erstellen Sie eine .proto
-Datei mit Ihren Dienst- und Nachrichtendefinitionen. Zum Beispiel:
syntax = "proto3";
package example;
service HelloService {
rpc SayHello (HelloRequest) returns (HelloResponse);
}
message HelloRequest {
string name = 1;
}
message HelloResponse {
string message = 1;
}
Schritt 2: Generieren Sie Client- und Server-Code
Verwenden Sie als Nächstes den Protocol Buffers Compiler, um den Client- und Server-Code zu generieren. Führen Sie den folgenden Befehl aus:
protoc -I=. --js_out=import_style=commonjs,binary:. --grpc-web_out=import_style=commonjs,mode=grpcwebtext:. example.proto
Dieser Befehl generiert die erforderlichen JavaScript-Dateien für Ihren gRPC-Web-Client.
Schritt 3: Richten Sie Ihren Server ein
Richten Sie nun einen gRPC-Server ein, um Anfragen zu bearbeiten. Hier ist ein Beispiel mit Node.js:
const grpc = require('@grpc/grpc-js');
const protoLoader = require('@grpc/proto-loader');
const packageDefinition = protoLoader.loadSync('example.proto', {});
const exampleProto = grpc.loadPackageDefinition(packageDefinition).example;
function sayHello(call, callback) {
callback(null, { message: `Hello, ${call.request.name}!` });
}
const server = new grpc.Server();
server.addService(exampleProto.HelloService.service, { sayHello: sayHello });
server.bindAsync('0.0.0.0:50051', grpc.ServerCredentials.createInsecure(), () => {
server.start();
});
Schritt 4: Richten Sie Ihren Client ein
Richten Sie schließlich Ihren Webclient ein, um mit dem gRPC-Server zu kommunizieren. Hier ist ein Beispiel mit React:
import React, { useState } from 'react';
import { HelloServiceClient } from './example_grpc_web_pb';
import { HelloRequest } from './example_pb';
const client = new HelloServiceClient('http://localhost:8080');
function App() {
const [response, setResponse] = useState('');
const sayHello = () => {
const request = new HelloRequest();
request.setName('World');
client.sayHello(request, {}, (err, response) => {
if (err) {
console.error(err);
} else {
setResponse(response.getMessage());
}
});
};
return (
<div>
<button onClick={sayHello}>Say Hello</button>
<p>{response}</p>
</div>
);
}
export default App;
Schritt 5: Richten Sie einen Proxy ein
Da gRPC-Web HTTP/2 verwendet, müssen Sie einen Proxy einrichten, um die Anfragen zu konvertieren. Sie können für diesen Zweck den grpc-web
-Proxy verwenden. So geht's:
docker run -d -p 8080:8080 --network host \
--name grpc-web-proxy \
envoyproxy/envoy:v1.18.3 -c /etc/envoy-config.yaml
Erstellen Sie eine envoy-config.yaml
-Datei mit dem folgenden Inhalt:
static_resources:
listeners:
- address:
socket_address:
address: 0.0.0.0
port_value: 8080
filter_chains:
- filters:
- name: envoy.filters.network.http_connection_manager
typed_config:
"@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager
codec_type: AUTO
stat_prefix: ingress_http
route_config:
name: local_route
virtual_hosts:
- name: local_service
domains: ["*"]
routes:
- match:
prefix: "/"
route:
cluster: grpc_service
http_filters:
- name: envoy.filters.http.grpc_web
- name: envoy.filters.http.router
clusters:
- name: grpc_service
connect_timeout: 0.25s
type: logical_dns
lb_policy: round_robin
http2_protocol_options: {}
load_assignment:
cluster_name: grpc_service
endpoints:
- lb_endpoints:
- endpoint:
address:
socket_address:
address: 127.0.0.1
port_value: 50051
Tools zur Verbesserung Ihrer gRPC-Web-Entwicklung
Obwohl die Einrichtung von gRPC-Web recht einfach ist, gibt es Tools, die den Entwicklungsprozess noch reibungsloser gestalten können. Ein solches Tool ist Apidog. Apidog ist ein API-Verwaltungstool, mit dem Sie Ihre APIs mühelos entwerfen, testen und überwachen können. Es unterstützt gRPC und ist damit eine ausgezeichnete Wahl für die gRPC-Web-Entwicklung. Mit Apidog können Sie:
- APIs entwerfen: Erstellen und verwalten Sie Ihre gRPC-Dienstdefinitionen mit einer intuitiven Benutzeroberfläche.
- APIs testen: Testen Sie Ihre gRPC-Dienste einfach mit leistungsstarken Testtools.
- APIs überwachen: Behalten Sie die Leistung Ihrer API im Auge und stellen Sie sicher, dass alles reibungslos läuft.

Die Verwendung von Apidog in Verbindung mit gRPC-Web kann Ihren Entwicklungs-Workflow erheblich optimieren und sicherstellen, dass Sie robuste, zuverlässige APIs erstellen.
Schritt-für-Schritt-Anleitung zum Testen von gRPC-Web mit Apidog
Schritt 1: Richten Sie Apidog ein
Erstellen Sie ein neues Projekt: Öffnen Sie Apidog, erstellen Sie ein neues Projekt, indem Sie auf die Schaltfläche "+ Neues Projekt" klicken. Geben Sie Ihrem Projekt einen Namen und eine Beschreibung, um die Organisation zu erleichtern.

Schritt 2: Definieren Sie Ihren gRPC-Dienst
Importieren Sie Ihre .proto-Datei: Sie können entweder Ihre vorhandene .proto
-Datei importieren oder Ihren gRPC-Dienst manuell definieren. Um zu importieren, klicken Sie auf die Schaltfläche "Importieren" und wählen Sie Ihre .proto
-Datei aus. Apidog analysiert die Datei automatisch und generiert die erforderlichen API-Definitionen.

Schritt 3: Konfigurieren Sie Ihren gRPC-Web-Endpunkt
Richten Sie den Endpunkt ein: Konfigurieren Sie nach dem Importieren Ihrer .proto
-Datei Ihren gRPC-Web-Endpunkt, indem Sie die URL Ihres gRPC-Web-Servers angeben. Wenn Ihr Server beispielsweise unter http://localhost:8080
ausgeführt wird, geben Sie diese URL in der Endpunktkonfiguration ein.

Apidog listet alle in Ihrer .proto
-Datei definierten Servicemethoden auf. Sie können die Methoden auswählen, die Sie testen möchten, und sie zu Ihrer API hinzufügen.
Anwendungsbeispiele für gRPC-Web in der Praxis
Um Ihnen eine bessere Vorstellung davon zu geben, wo gRPC-Web glänzt, finden Sie hier einige Anwendungsbeispiele in der Praxis:
1. Echtzeit-Anwendungen
Anwendungen, die Echtzeit-Datenaktualisierungen erfordern, wie z. B. Chat-Anwendungen oder Live-Dashboards, können stark von gRPC-Web profitieren. Sein effizientes Kommunikationsprotokoll sorgt für geringe Latenz und hohe Leistung.
2. Microservices-Architekturen
Wenn Sie mit einer Microservices-Architektur arbeiten, kann gRPC-Web Ihren Webanwendungen helfen, nahtlos mit Backend-Diensten zu kommunizieren. Auf diese Weise können Sie ein konsistentes Kommunikationsprotokoll über Ihren gesamten Stack hinweg beibehalten.
3. Datenintensive Anwendungen
Anwendungen, die große Datenmengen verarbeiten müssen, wie z. B. Video-Streaming-Dienste oder Big-Data-Analyseplattformen, können die effizienten Datenserialisierungs- und Transportfähigkeiten von gRPC-Web nutzen.
4. IoT-Plattformen
IoT-Plattformen erfordern oft eine effiziente und skalierbare Kommunikation zwischen Geräten und Servern. gRPC-Web bietet eine robuste Lösung für die Verwaltung dieser Interaktionen.
Fazit
Und hier haben Sie es – einen umfassenden Überblick über gRPC-Web. Wir haben behandelt, was es ist, warum es nützlich ist und wie Sie es in Ihren Projekten verwenden können. Mit seinen Leistungsvorteilen, der Benutzerfreundlichkeit und der Skalierbarkeit ist gRPC-Web ein leistungsstarkes Werkzeug für die moderne Webentwicklung. Egal, ob Sie Echtzeit-Anwendungen, Microservices-Architekturen oder datenintensive Plattformen erstellen, gRPC-Web hat alles, was Sie brauchen. Und mit Tools wie Apidog können Sie Ihren API-Entwicklungsprozess optimieren und sicherstellen, dass Ihre Dienste reibungslos laufen.
Also, worauf warten Sie noch? Tauchen Sie ein in gRPC-Web und beginnen Sie mit dem Aufbau der nächsten Generation von Webanwendungen!