Читать книгу GraphQL - Dominik Kress - Страница 26

gRPC in der Verwendung

Оглавление

In gRPC deklariert man einen Service in einer technologieunabhängigen Interface Defintion Language. Hierbei nutzt gRPC jedoch nicht wie weitläufig verbreitet JSON oder das noch von SOAP im RPC-Umfeld bekannte XML, sondern sogenannte Protocol Buffers. Eine solche Proto-Datei kann dann wie folgt aussehen:

syntax = "proto3";

package com.rebel;

message Rebel {

int64 id = 1;

string name = 2;

string ship = 3;

}

message GetRebelRequest {

int64 id = 1;

}

message GetRebelsViaShip {

string ship = 1;

}

service RebelService {

rpc Get (GetRebelRequest)

returns (Rebel) {}

rpc GetRebelsViaShip (GetRebelsViaShip)

returns (stream Rebel) {}

rpc GetMostDangerousRebel (stream GetRebelRequest)

returns (Rebel) {}

rpc GetRebels (stream GetRebelRequest)

returns (stream Rebel) {}

}

message RebelBase {

string name = 1;

map<int64, string> rebels = 2;

}

Listing 1–8 Proto-Service-Definition-Beispiel

Aus diesen definierten Proto-Dateien generiert gRPC mithilfe des protoc-Compilers technologiespezifische Bindungen. Durch diese generierten Stubs kann der Client einfach Funktionen des Servers aufrufen, als wären sie Teil des Client-Codes. Die Protokolle des Stubs sorgen dafür, dass der Funktionsaufruf an den Server weitergegeben, verarbeitet und beantwortet wird.


Abb. 1–3 Das gRPC-Konzept nach Googles gRPC-Guide [23]

GraphQL

Подняться наверх