Von hier aus Subroutinen starten
Von Loredana Covaci/Peter Riedlberger
Remote Procedure Call'(RPC) bedeutet „entfernter Prozedurenaufruf“. Gemeint sind damit Aufrufe (calls) von Subroutinen von Programmen (procedures), die gar nicht auf dem aufrufenden Computer laufen (remote), sondern auf einem anderen Computer im Netzwerk oder gar im Internet. Aufgrund der vielfältigen Möglichkeiten, die die Zusammenarbeit von Computern über das Internet bietet, nimmt die Bedeutung von RPCs rasant zu.
Eingaben und Antworten
„Prozedur“ ist einer von zahlreichen Ausdrücken, die – je nach Programmiersprache – für einen eigenständig einsetzbaren Teil eines größeren Programms verwendet werden. Synonyme Ausdrücke wären Subroutine, Funktion und – vor allem in objektorientierten Sprachen wie Java – Methode.
Wenn eine Prozedur an anderer Stelle eines Programms aufgerufen wird, werden typischerweise Daten als Eingabe übergeben – die Parameter –, und das Programm erhält eine Ausgabe zurück, mit der es weiter arbeiten kann. Ein ganz einfaches Beispiel wäre eine Prozedur, der man eine Celsius-Temperatur übergibt und als Antwort eine Fahrenheit-Temperatur erhält. Die entsprechende Prozedur ließe sich in den meisten Sprachen in einer Zeile coden.
Ein weit weniger triviales Beispiel wäre die Konvertierung zwischen Dollar und Euro, weil dafür der tagesaktuelle Kurs notwendig ist. Ein noch schwierigeres Beispiel wäre eine Prozedur, wie sie im Online-Buchhandel nötig ist, wo die Suchbegriffe („Schiller“) und die Preisvorstellung („unter 10 Euro“) als Parameter übergeben werden und man als Antwort alle lieferbaren Bücher erwartet, auf die dies zutrifft.
Unabhängige Subroutinen
Genau hier kommen RPCs ins Spiel: Der Rechner des Büchersuchers ruft eine entfernte Programm-Subroutine des Buchhändlers auf, die dann die Ergebnisse als Output wieder zurückgibt.
Dabei haben RPCs allerdings eine Schwierigkeit zu überwinden, die bei lokalen Prozedurenaufrufen entfällt: Wenn eine Prozedur auf einem entfernen Rechner aufgerufen wird, weiß das aufrufende Programm ja nicht unbedingt, in welcher Programmiersprache das entfernte Programm läuft. Im Gegenteil, es sollte davon unabhängig sein, damit der Betreiber des entfernten Rechners jederzeit seine Software-Ausstattung ändern kann, ohne dass der Zugriff auf die Prozeduren dadurch unterbrochen würde. Es muss also ein Standard für den RPC verwendet werden, der unabhängig von den verwendeten Programmiersprachen ist und dennoch Parameter und Rückgabewerte so übermittelt, dass keine von beiden Seiten Probleme damit hat. Solche Standards sind XML-RPC und vor allem dessen Nachfolger SOAP.