Know-how: Kommunikation mit Remote Procedure Calls

Mit Remote Procedure Calls kann ein Client die Arbeit sehr einfach an einen Server delegieren. Wie bei einem Unterprogramm erhält er via RPC Antworten auf Anfragen fertig aufbereitet vom Server zurück.

Häufig basieren Netzwerkanwendungen auf einem Frage-und-Antwort-Schema. Ein Prozess (der Client) auf einem Rechner beauftragt einen zweiten Prozess (den Server) auf einem anderen Rechner, eine bestimmte Aktion auszuführen und ein dazu gehörendes Ergebnis zu melden. In diesem Szenario steht weniger die Datenübertragung als die Aufteilung der Arbeit im Mittelpunkt.

Betrachten wir als Beispiel einen Datenbank-Server. Ein Client fragt nach allen Einträgen zu einem bestimmten Nachnamen. Der Ablauf ist:

  • 1. Der Client schickt eine Abfrage mit dem Nachnamen und wartet anschließend.

  • 2. Der Server sucht nach entsprechenden Einträgen.

  • 3. Der Server sendet die Liste mit gefundenen Einträgen zurück.

  • 4. Der Client empfängt die Antwort und arbeitet damit weiter.

Folgendes Bild zeigt den Ablauf in der Darstellung als Zeitstrahl.

Bei dem Ansatz mit Remote Procedure Call RPC betrachtet man diesen Ablauf wie den Aufruf eines Unterprogramms. Der Client entspricht dem übergeordneten Modul, das eine Funktion mit einer Argumentliste und Rückgabewerten aufruft. Der RPC-Formalismus unterstützt diese Sichtweise durch eine Reihe von Werkzeugen. Mit deren Hilfe erfolgt die Umsetzung in den auf unterer Schicht ablaufenden Austausch von Datenpaketen weit gehend automatisch. Im Allgemeinen können die beiden Prozesse in verschiedenen Programmiersprachen geschrieben worden sein und auf verschiedenen Betriebssystemen laufen. Daher ist es notwendig, eine plattformunabhängige Repräsentation der Daten einzusetzen.