REST, GraphQL und gRPC Teil 7: Plattformen und Programmiersprachen

Von: Thomas Bayer
Datum: 4. Feb. 2020

REST, GraphQL und gRPC sind nicht auf eine bestimmte Plattform festgelegt. Theoretisch könnten beliebige Programmiersprachen oder Betriebssysteme verwendet werden. In der Praxis gibt es aber kleine Einschränkungen. Dieser Teil des Artikels vergleicht die Unterstützung für verschiedene Programmiersprachen.

Die folgenden Themen werden in den anderen Teilen dieses Artikels beschrieben:

REST, GraphQL und gRPC sind unabhängig vom Betriebssystem und der Programmiersprache. Client und Server können mit verschiedenen Programmiersprachen erstellt und auf unterschiedlichen Betriebssystemen betrieben werden: z.B. ein mit C# erstellter Client auf Windows, der mit einem in der Sprache Go implementierten Server auf Linux kommuniziert.

Für REST gibt es quasi keinerlei Einschränkungen in Bezug auf Programmiersprachen und Betriebssysteme. Jede Programmiersprache und jedes Betriebssystem, das das HTTP Protokoll unterstützt kann verwendet werden. Bis auf exotische Plattformen für Spezialfälle z.B. für Microcontroller oder das Internet of Things dürfte HTTP überall verfügbar sein. Für REST werden auch keine speziellen Werkzeuge oder Frameworks benötigt.

Für GraphQL und gRPC dagegen werden spezielle Bibliotheken benötigt, die nicht in jeder Programmiersprache zur Verfügung stehen. In der Tabellen unten sind Programmiersprachen aufgeführt, für die es Unterstützung für GraphQL oder gRPC gibt.

Sprache GraphQL gRPC
C# x x
C++ x x
Clojure x
Dart x
Elixir x
Go x x
Haskell x
Java x x
Javascript x
Kotlin/JVM x
Node.js x*
Objective-C x
Perl x
PHP x x*
Python x x*
R x
Ruby x x*
Rust x

* Unterstützung über Wrapper-Klassen um den gRPC C-Code. Keine native Implementierung in der jeweiligen Sprache.

Für gRPC gibt es Implementierungen für den kompletten Stack in C, C++, Go und Java. Andere Sprachen wie z.B. Python verwenden einen Wrapper um den C oder C++ Stack.

Fazit

Alle drei Optionen sind unabhängig von einer konkreten Programmiersprache. Eine vollständige Unabhängigkeit von der Sprache und Plattform gibt es allerdings nur für REST.

Quellen

  1. Visualizing gRPC Language Stacks, gRPC Blog Post