Was ist gRPC-Web? Alles, was Sie wissen müssen

Entdecken Sie gRPC-Web! Vorteile & Start. Effiziente Web-App-Kommunikation mit gRPC-Diensten. Tools wie Apidog erleichtern die API-Entwicklung.

Leo Schulz

Leo Schulz

5 June 2025

Was ist gRPC-Web? Alles, was Sie wissen müssen

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.

gRPC web

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.

gRPC

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:

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:

Apidog Official website

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.

Create gRPC project on Apidog

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.

Import Your .proto File

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.

Configure Your gRPC-Web Endpoint

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!

Explore more

Fathom-R1-14B: Fortschrittliches KI-Argumentationsmodell aus Indien

Fathom-R1-14B: Fortschrittliches KI-Argumentationsmodell aus Indien

Künstliche Intelligenz wächst rasant. FractalAIResearch/Fathom-R1-14B (14,8 Mrd. Parameter) glänzt in Mathe & Logik.

5 June 2025

Cursor 1.0 mit BugBot: KI-gestütztes Automatisierungstest-Tool ist da:

Cursor 1.0 mit BugBot: KI-gestütztes Automatisierungstest-Tool ist da:

Die Softwareentwicklung erlebt Innovationen durch KI. Cursor, ein KI-Editor, erreicht mit Version 1.0 einen Meilenstein.

5 June 2025

30+ öffentliche Web 3.0 APIs, die Sie jetzt nutzen können

30+ öffentliche Web 3.0 APIs, die Sie jetzt nutzen können

Der Aufstieg von Web 3.0: Dezentral, nutzerorientiert, transparent. APIs ermöglichen innovative dApps und Blockchain-Integration.

4 June 2025

Praktizieren Sie API Design-First in Apidog

Entdecken Sie eine einfachere Möglichkeit, APIs zu erstellen und zu nutzen