Definition

Remote Procedure Call (RPC)

Remote Procedure Call (RPC) ist ein Protokoll, das ein Programm verwenden kann, um einen Dienst von einem Programm anzufordern, das sich auf einem anderen Computer in einem Netzwerk befindet, ohne die Details des Netzwerks verstehen zu müssen. RPC wird verwendet, um andere Prozesse auf den entfernten Systemen wie ein lokales System aufzurufen. Ein Procedure Call (Prozeduraufruf) wird manchmal auch als Function Call (Funktionsaufruf) oder Subroutine Call (Unterprogrammaufruf) bezeichnet.

RPC verwendet das Client-Server-Modell. Das anfordernde Programm ist ein Client, und das bereitstellende Programm ist der Server. Wie ein regulärer oder lokaler Prozeduraufruf ist ein RPC eine synchrone Operation, bei der das anfordernde Programm angehalten werden muss, bis die Ergebnisse der entfernten Prozedur zurückgegeben werden. Durch die Verwendung von leichtgewichtigen Prozessen oder Threads, die sich denselben Adressraum teilen, können jedoch mehrere RPCs gleichzeitig ausgeführt werden.

Die Interface Definition Language (IDL) – die Spezifikationssprache, die zur Beschreibung der Programmierschnittstelle (API) einer Softwarekomponente verwendet wird – wird häufig in Software für Remote Procedure Calls verwendet. In diesem Fall stellt IDL eine Brücke zwischen den Maschinen an beiden Enden der Verbindung dar, die möglicherweise unterschiedliche Betriebssysteme und Computersprachen verwenden.

RPC-Nachrichtenprozedur

Wenn Programmanweisungen, die das RPC-Framework verwenden, in ein ausführbares Programm kompiliert werden, wird ein Stub (kurzer Programmcode) in den kompilierten Code eingefügt, der als Vertreter des Remote Procedure Code fungiert. Wenn das Programm ausgeführt wird und der Prozeduraufruf erfolgt, empfängt der Stub die Anforderung und leitet sie an ein Client-Laufzeitprogramm auf dem lokalen Rechner weiter. Wenn der Client-Stub zum ersten Mal aufgerufen wird, kontaktiert er einen Nameserver, um die Transportadresse zu ermitteln, an der sich der Server befindet.

Das Client-Laufzeitprogramm weiß, wie der entfernte Rechner und die Serveranwendung zu adressieren sind, und sendet die Nachricht über das Netzwerk, welches die entfernte Prozedur anfordert. In ähnlicher Weise enthält der Server ein Laufzeitprogramm und einen Stub, die die Schnittstelle mit der entfernten Prozedur selbst bilden. Response-Request-Protokolle werden auf die gleiche Weise zurückgegeben.

RPC-Modelle und alternative Methoden für die Client-Server-Kommunikation

Es gibt mehrere RPC-Modelle und Implementierungen für Distributed Computing. Ein beliebtes Modell und eine beliebte Implementierung ist Distributed Computing Environment (DCE) der Open Software Foundation (OSF).

Das Institute of Electrical and Electronics Engineers (IEEE) definiert RPC in seiner ISO Remote Procedure Call Specification, ISO/IEC CD 11578 N6561, ISO/IEC, November 1991.

RPC umfasst die Transportschicht und die Anwendungsschicht im OSI-Modell (Open Systems Interconnection) der Netzwerkkommunikation. RPC erleichtert die Entwicklung einer Anwendung, die mehrere in einem Netzwerk verteilte Programme umfasst.

Zu den alternativen Methoden für die Client-Server-Kommunikation gehören Message Queueing und die Advanced Program-to-Program Communication (APPC) von IBM.

Wie funktioniert ein Remote Procedure Call?

Wenn ein Remote Procedure Call aufgerufen wird, wird die aufrufende Umgebung angehalten, die Prozedurparameter werden über das Netzwerk an die Umgebung übertragen, in der die Prozedur ausgeführt werden soll, und die Prozedur wird dann in dieser Umgebung ausgeführt.

Wenn die Prozedur beendet ist, werden die Ergebnisse zurück an die aufrufende Umgebung übertragen, wo die Ausführung wie bei der Rückkehr von einem regulären Prozeduraufruf fortgesetzt wird.

Während einer RPC finden folgende Schritte statt:

  1. Der Client ruft den Client-Stub auf. Der Aufruf ist ein lokaler Prozeduraufruf mit Parametern, die auf normale Weise auf den Stack geschoben werden.
  2. Der Client-Stub packt die Prozedurparameter in eine Nachricht und macht einen Systemaufruf, um die Nachricht zu senden. Das Packen der Prozedurparameter wird als Marshalling bezeichnet.
  3. Das lokale Betriebssystem des Clients sendet die Nachricht vom Client-Rechner an den entfernten Server-Rechner.
  4. Das Server-Betriebssystem leitet die eingehenden Pakete an den Server-Stub weiter.
  5. Der Server-Stub entpackt die Parameter – Un-Marshalling genannt – aus der Nachricht.
  6. Wenn die Server-Prozedur beendet ist, kehrt sie zum Server-Stub zurück, der die Rückgabewerte in eine Nachricht einordnet. Der Server-Stub übergibt die Nachricht dann an die Transportschicht.
  7. Die Transportschicht sendet die Nachricht zurück an die Client-Transportschicht, die die Nachricht an den Client-Stub zurückgibt.
  8. Der Client-Stub hebt die Rückgabeparameter auf, und die Ausführung kehrt zum Aufrufer zurück.

Arten von Remote Procedure Calls

Es gibt fünf Arten von RPC:

  1. Die normale Betriebsart, bei der der Client einen Aufruf tätigt und nicht weitermacht, bis der Server die Antwort zurückgibt.
  2. Der Client tätigt einen Aufruf und fährt mit seiner eigenen Verarbeitung fort. Der Server antwortet nicht.
  3. Eine Möglichkeit, mehrere nicht blockierende Client- Aufruf in einem Stapel zu senden.
  4. RPC-Clients verfügen über eine Broadcast-Funktion, das heißt sie können Nachrichten an viele Server senden und dann alle resultierenden Antworten empfangen.
  5. Der Client macht einen nichtblockierenden Client/Server-Aufruf. Der Server signalisiert den Abschluss des Aufrufs durch den Aufruf einer mit dem Client verbundenen Prozedur.

Vorteile des Remote Procedure Call

Zu den Vorteilen des Remote Procedure Call gehören:

  • hilft Clients bei der Kommunikation mit Servern über die traditionelle Verwendung von Prozeduraufrufen in High-Level-Sprachen;
  • kann sowohl in einer verteilten Umgebung als auch in der lokalen Umgebung eingesetzt werden;
  • unterstützt prozessorientierte und thread-orientierte Modelle;
  • verbirgt den internen Nachrichtenübermittlungsmechanismus vor dem Benutzer;
  • erfordert nur minimalen Aufwand für das Neuschreiben und Neuentwickeln des Codes;
  • bietet Abstraktion, das heißt die nachrichtenübermittelnde Natur der Netzwerkkommunikation ist vor dem Benutzer verborgen; und
  • lässt viele der Protokollschichten weg, um die Leistung zu verbessern.

Nachteile des Remote Procedure Call

Zu den Nachteilen von RPC gehören:

  • Client und Server verwenden unterschiedliche Ausführungsumgebungen für ihre jeweiligen Routinen, und die Nutzung von Ressourcen, zum Beispiel Dateien, ist ebenfalls komplexer. Folglich sind RPC-Systeme nicht wirklich für die Übertragung großer Datenmengen geeignet.
  • RPC ist sehr störanfällig, da es sich um ein Kommunikationssystem, eine andere Maschine und einen anderen Prozess handelt.
  • Es gibt keinen einheitlichen Standard für RPC; es kann auf verschiedene Arten implementiert werden.
  • RPC ist nur interaktionsbasiert und bietet daher keine Flexibilität in der Hardwarearchitektur.
Diese Definition wurde zuletzt im Oktober 2020 aktualisiert

Erfahren Sie mehr über Netzwerkhardware

ComputerWeekly.de
Close