Funktionsweise von RPC
Die RPC-Tools lassen Benutzer so aussehen, als ob ein Client direkt eine Prozedur aufruft, die sich in einem Remoteserverprogramm befindet. Client und Server verfügen jeweils über eigene Adressräume. Das heißt, jede 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. Anstatt den tatsächlichen Code zu enthalten, der die Remoteprozedur implementiert, ist der Clientstubcode:
- Ruft die erforderlichen Parameter aus dem Clientadressraum ab.
- Übersetzt die Parameter nach Bedarf in ein Standard-NDR-Format für die Übertragung über das Netzwerk.
- Ruft Funktionen in der RPC-Clientlaufzeitbibliothek auf, um die Anforderung und die zugehörigen 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 vom Server erforderliche Format.
- Der Serverstub ruft die tatsächliche 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 Sequenz 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-Client-Laufzeitbibliothek empfängt die Rückgabewerte der Remoteprozedur 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 wäre die Prozedur auf demselben Computer aufgerufen worden.
Die Laufzeitbibliotheken werden in zwei Teilen bereitgestellt: einer Importbibliothek, die mit der Anwendung verknüpft ist, und der RPC-Laufzeitbibliothek, die als Dynamic Link Library (DLL) implementiert ist.
Die Serveranwendung enthält Aufrufe der Laufzeitbibliotheksfunktionen des Servers, die die Schnittstelle des Servers registrieren und es dem Server ermöglichen, Remoteprozeduraufrufe zu akzeptieren. Die Serveranwendung enthält auch die anwendungsspezifischen Remoteprozeduren, die von den Clientanwendungen aufgerufen werden.