RPC-Modell

Das RPC-Modell (Remote Procedure Call) ähnelt einem lokalen Prozeduraufrufmodell. Im lokalen Modell platziert der Aufrufende Argumente für eine Prozedur an einer angegebenen Position, beispielsweise in einem Ergebnisregister.

Anschließend überträgt der Aufrufende die Steuerung an die Prozedur. Der Aufrufende erhält schließlich die Steuerung zurück, extrahiert die Ergebnisse der Prozedur und setzt die Ausführung fort.

RPC funktioniert ähnlich, da ein Steuerthread logisch zwei Prozesse durchläuft: den aufrufenden Prozess und den Serverprozess. Zuerst sendet der aufrufende Prozess eine Aufrufnachricht, die die Prozedurparameter an den Serverprozess enthält. Anschließend wartet der aufrufende Prozess auf eine Antwortnachricht (blockiert). Als Nächstes extrahiert ein serverseitiger Prozess, der bis zum Eintreffen der Aufrufnachricht inaktiv ist, die Prozedurparameter, berechnet die Ergebnisse und sendet eine Antwortnachricht. Der Server wartet auf die nächste Aufrufnachricht. Schließlich empfängt ein Prozess auf dem Aufrufenden die Antwortnachricht, extrahiert die Ergebnisse der Prozedur und der Aufrufende setzt die Ausführung fort.

Die Abbildung zum Remote Procedure Call Flow (Abbildung 1) veranschaulicht das RPC-Paradigma.

Abb. 1. Ablauf des Fernprozeduraufrufs
Dieses Diagramm zeigt den Clientprozess auf der linken Seite, der (von oben nach unten) den Client, den Client-Stub und die RPC-Laufzeitbibliothek enthält. Der Serverprozess auf der rechten Seite enthält Folgendes (von oben nach unten aufgelistet): Managerprozeduren, Server-Stub und die RPC-Laufzeitbibliothek. Die Aufrufe können vom Client zu den Managerprozeduren führen, die den offensichtlichen Ablauf und oberhalb der Schnittstelle überschreiten. Der Aufruf vom Client kann auch über die Schnittstelle zum Client-Stub erfolgen. Vom Client-Stub kann der Aufruf an die RPC-Laufzeitbibliothek im Clientprozess übertragen werden. Der Anruf kann als Netznachricht an die Bibliothek im Serverprozess übertragen werden. Aufrufe im Serverprozess können von der RPC-Laufzeitbibliothek zum Server-Stub und vom Server-Stub zu den Managerprozeduren wechseln. Beachten Sie, dass es eine Rückkehr in die entgegengesetzte Richtung von jedem zuvor genannten Aufruf gibt.

Im RPC-Modell ist jeweils nur einer der beiden Prozesse aktiv. Außerdem ist dieses Modell nur ein Beispiel. Das RPC-Protokoll macht keine Einschränkungen für das Parallelitätsmodell implementiert, und andere sind möglich. Eine Implementierung kann beispielsweise asynchrone Fernprozeduraufrufe auswählen, sodass der Client weiter arbeiten kann, während er auf eine Antwort vom Server wartet. Außerdem kann der Server eine Task erstellen, um eingehende Anforderungen zu verarbeiten und somit frei für den Empfang anderer Anforderungen zu bleiben.