gRPC für C++: Komplettguide mit Praxisbeispielen

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Was ist gRPC und warum wird es benötigt?

gRPC (gRPC Remote Procedure Calls) ist ein leistungsstarkes, quelloffenes Framework für entfernte Prozeduraufrufe (RPC), das von Google entwickelt wurde. Es ermöglicht einer Client-Anwendung, Methoden auf einer Server-Anwendung direkt aufzurufen, als wäre es ein lokales Objekt. Das vereinfacht die Erstellung verteilter Systeme und Microservices erheblich.

Die Grundlage von gRPC bildet Protocol Buffers (protobuf) – ein leistungsfähiger Mechanismus zur Serialisierung strukturierter Daten. Sie definieren die Datenstruktur und den Dienst in einer .proto-Datei, und der Compiler protoc generiert daraus den Code für die gewünschten Sprachen (in unserem Fall C++).

Die wichtigsten Vorteile von gRPC:

  • Hohe Leistung: Nutzt HTTP/2 für das Multiplexing von Anfragen und das binäre Protobuf-Format – deutlich schneller als JSON/XML.
  • Starke Typisierung: Verträge zwischen Diensten sind in .proto-Dateien klar definiert.
  • Streaming-Unterstützung: Bietet Server-Streaming, Client-Streaming und bidirektionales Streaming.
  • Mehrsprachigkeit: Generiert Clients und Server für C++, Java, Python, Go, C#, Ruby und viele weitere Sprachen.
  • Integrierte Authentifizierung und Verschlüsselung: Unterstützt TLS/SSL und Interceptors.

Die gRPC-Bibliothek für C++ ist eine native Implementierung, die maximale Kontrolle über Speicher und Leistung bietet. Das ist besonders wichtig für hochlastige Systeme, Spieleserver, Finanzanwendungen und IoT.

gRPC für C++ installieren

Die Installation von gRPC für C++ ist aufwändiger als für Python, da sie eine Kompilierung aus dem Quellcode oder die Nutzung des Paketmanagers vcpkg erfordert. Wir zeigen Ihnen die zwei wichtigsten Methoden.

Methode 1: Installation über vcpkg (empfohlen)

vcpkg ist ein plattformübergreifender Paketmanager für C++ von Microsoft.

# 1. vcpkg klonen
git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg

# 2. vcpkg installieren (Windows: bootstrap-vcpkg.bat)
./bootstrap-vcpkg.sh

# 3. In das System integrieren (für Visual Studio oder CMake)
./vcpkg integrate install

# 4. gRPC installieren (inklusive protobuf und Abhängigkeiten)
./vcpkg install grpc

Nach der Installation muss das gefundene Paket in Ihrer CMakeLists.txt eingebunden werden:

find_package(gRPC CONFIG REQUIRED)
find_package(Protobuf CONFIG REQUIRED)

target_link_libraries(my_target
    gRPC::grpc++
    gRPC::grpc++_reflection
    protobuf::libprotobuf
)

Methode 2: Aus dem Quellcode kompilieren (Linux/macOS)

Diese Methode bietet mehr Kontrolle, erfordert aber die Installation von Abhängigkeiten (cmake, openssl, zlib, abseil).

# Repository mit Submodulen klonen
git clone --recurse-submodules -b v1.62.0 https://github.com/grpc/grpc
cd grpc

# Build-Ordner erstellen
mkdir -p cmake/build
cd cmake/build

# Konfigurieren und bauen
cmake ../.. -DgRPC_INSTALL=ON \
            -DCMAKE_BUILD_TYPE=Release \
            -DCMAKE_INSTALL_PREFIX=/usr/local
make -j$(nproc)
sudo make install

Schnellstart: "Hello World"-Beispiel

Wir erstellen eine einfache Anwendung, die einen Benutzernamen entgegennimmt und eine Begrüßung zurückgibt.

Schritt 1: Dienst in der .proto-Datei definieren

Erstellen Sie die Datei hello.proto:

syntax = "proto3";

package helloworld;

// Nachricht für die Anfrage definieren
message HelloRequest {
  string name = 1;
}

// Nachricht für die Antwort definieren
message HelloReply {
  string message = 1;
}

// RPC-Dienst definieren
service Greeter {
  // Unärer RPC: eine Anfrage -> eine Antwort
  rpc SayHello (HelloRequest) returns (HelloReply);
}

Schritt 2: C++-Code generieren

protoc --grpc_out=. --plugin=protoc-gen-grpc=`which grpc_cpp_plugin` hello.proto
protoc --cpp_out=. hello.proto

Dies erstellt

Empfehlungen