Funktionsweise von RPC
Die RPC-Tools machen es Benutzern so, als würde ein Client direkt eine Prozedur aufrufen, die sich in einem Remoteserverprogramm befindet. Client und Server verfügen jeweils über eigene Adressräume. Das heißt, jeder verfügt über eine eigene Speicherressource, die den von der Prozedur verwendeten Daten zugeordnet ist. Die folgende Abbildung veranschaulicht die RPC-Architektur.

Wie die Abbildung zeigt, ruft die Clientanwendung anstelle des tatsächlichen Codes, der die Prozedur implementiert, eine lokale Stubprozedur auf. Stubs werden kompiliert und mit der Clientanwendung verknüpft. Der Clientstubcode enthält nicht den tatsächlichen Code, der die Remoteprozedur implementiert:
- Ruft die erforderlichen Parameter aus dem Clientadressraum ab.
- Übersetzt die Parameter nach Bedarf in ein NDR-Standardformat für die Übertragung über das Netzwerk.
- Ruft Funktionen in der RPC-Clientlaufzeitbibliothek auf, um die Anforderung und ihre Parameter an den Server zu senden.
Der Server führt die folgenden Schritte aus, um die Remoteprozedur aufzurufen.
- Die RPC-Laufzeitbibliotheksfunktionen des Servers akzeptieren die Anforderung und rufen die Serverstubprozedur auf.
- Der Serverstub ruft die Parameter aus dem Netzwerkpuffer ab und konvertiert sie aus dem Netzwerkübertragungsformat in das Format, das der Server benötigt.
- Der Serverstub ruft die eigentliche Prozedur auf dem Server auf.
Anschließend wird die Remoteprozedur ausgeführt, wobei möglicherweise Ausgabeparameter und ein Rückgabewert generiert werden. Wenn die Remoteprozedur abgeschlossen ist, gibt eine ähnliche Abfolge von Schritten die Daten an den Client zurück.
- Die Remoteprozedur gibt ihre Daten an den Serverstub zurück.
- Der Serverstub konvertiert Ausgabeparameter in das Format, das für die Übertragung über das Netzwerk erforderlich ist, und gibt sie an die RPC-Laufzeitbibliotheksfunktionen zurück.
- Die RPC-Laufzeitbibliotheksfunktionen des Servers übertragen die Daten im Netzwerk an den Clientcomputer.
Der Client schließt den Prozess ab, indem er die Daten über das Netzwerk akzeptiert und an die aufrufende Funktion zurückgibt.
- Die RPC-Laufzeitbibliothek des Clients empfängt die Remoteprozedurrückgabewerte und gibt sie an den Clientstub zurück.
- Der Clientstub konvertiert die Daten aus seinem NDR in das vom Clientcomputer verwendete Format. Der Stub schreibt Daten in den Clientspeicher und gibt das Ergebnis an das aufrufende Programm auf dem Client zurück.
- Die aufrufende Prozedur wird so fortgesetzt, als ob die Prozedur auf demselben Computer aufgerufen worden wäre.
Die Laufzeitbibliotheken werden in zwei Teilen bereitgestellt: eine Importbibliothek, die mit der Anwendung verknüpft ist, und die RPC-Laufzeitbibliothek, die als Dynamic Link Library (DLL) implementiert wird.
Die Serveranwendung enthält Aufrufe der Funktionen der Serverlaufzeitbibliothek, die die Schnittstelle des Servers registrieren und dem Server ermöglichen, Remoteprozeduraufrufe zu akzeptieren. Die Serveranwendung enthält auch die anwendungsspezifischen Remoteprozeduren, die von den Clientanwendungen aufgerufen werden.