WikiDer > Remote-Prozeduraufruf

Remote procedure call

EIN Remoteprozeduraufruf, Zusamenfassend RPC, ist eine Technologie, die Computer Programm auf einem bestimmten Computer, um Code auf einem anderen Computer auszuführen, ohne dass der Programmierer den Code explizit dafür geschrieben hat.

Struktur

RPC ist ein einfaches und beliebtes Paradigma für die Umsetzung der Client-Server-Modell in einem verteiltes System. Ein RPC wird vom Anforderer (Client) initialisiert, der eine Nachricht sendet, oder Nachricht anfordern, an einen Server, um dort eine bestimmte Prozedur mit den angegebenen Argumente. Nach Abschluss des Vorgangs sendet der Server eine Antwortnachricht oder Antworten zurück zum Kunden. Es gibt mehrere Variationen dieser Methode, die zu mehreren (unvereinbar) RPC-Protokolle existieren.

Sprache der Schnittstellenbeschreibung

sehen Sprache der Schnittstellenbeschreibung für den Hauptartikel zu diesem Thema.

Um Server verschiedenen Client-Rechnern zugänglich zu machen, sind eine Reihe von standardisierten RPC-Systemen notwendig. Auf diese Weise kann man plattformspezifische Unterschiede abstrahieren, oder man kann Programme in mehreren Programmiersprachen miteinander kommunizieren lassen.

Die meisten dieser Systeme verwenden a Schnittstellenbeschreibungssprache (IDL), damit mehrere Plattformen einen RPC aufrufen können. Diese Sprache beschreibt die Schnittstelle eindeutig, unabhängig von der Maschine oder der verwendeten endgültigen Programmiersprache. Beispiele für solche Systeme sind Sun RPC (auch bekannt als ONC RPC), das Verteilte Computerumgebung (DCE), SAP RFC (Remote Function Call), Microsofts DCOM (teilweise basierend auf DCE) und CORBA.

Transparenz

Übersicht über ein RPC-System

Die Kommunikation zwischen den verschiedenen Parteien in einem RPC-System ist vorzugsweise möglichst transparent. Das bedeutet, dass der Entwickler Code für Prozeduren schreiben kann, die auf einem anderen Computer ausgeführt werden, ohne die Details der dahinterstehenden Kommunikation zu kennen.

Um die Kommunikation zwischen Client und Server zu realisieren, werden verschiedene RPC-Systeme und Programmiersprachen verwendet Stummel oder Proxy-Objekte. Wenn eine entfernte Prozedur aufgerufen wird, wird sie vom Client-Stub behandelt, genauso wie eine lokale Prozedur in separatem Code aufgerufen würde. Anstatt die Prozedur selbst auszuführen, erstellt der Stub jedoch eine Nachricht und sendet sie an den Server. Auf dem Server wird diese Nachricht dann von einem Server-Stub empfangen, der die Nachricht extrahiert, die Variablen übergibt und die entsprechende Funktion im Server aufruft. Das Ergebnis wird dann an den Server-Stub zurückgegeben, der es wiederum an den Client-Stub sendet. Dieser entpackt die Nachricht und übergibt das Ergebnis so, als ob der Vorgang lokal durchgeführt worden wäre. Stubs werden normalerweise aus der IDL-Beschreibung der Schnittstelle generiert.

Geschichte

Die Idee hinter RPC geht auf RFC707 zurück 1976. Es stellt "Ressourcen-Sharing" und die Grundidee von RPC vor. Kurier von Xerox war eine der ersten Implementierungen, sowie NCS von Apollo-Computer, das ist die Grundlage für DCE/RPC wurde benutzt. Microsoft hat eine eigene Implementierung von RPC, nämlich MSRPC und DCOM, die wiederum auf CORBA basiert. Eines der am weitesten verbreiteten RPC-Systeme ist die RPC-Implementierung von Sonne, auch bekannt als ONC-RPC. Dies dient auch als Grundlage für ihre Netzwerkdateisystem (NFS).

In dem JavaUmwelt, die in den 1990er Jahren entstand, war Fernmethodenaufruf (RMI), die konzeptionell eine ähnliche Technologie ist.

Heutzutage wird immer mehr von XML als IDL und HTTP als Netzwerkprotokoll. Der große Vorteil dieser Arbeitsweise, besser bekannt als Internetdienste, ist die Einfachheit und Standardisierung: XML und HTTP sind in den meisten modernen Betriebssysteme. Beispiele für ein solches System sind SEIFE, abgeleitet von XML-RPC, und JAX-RPC.

Siehe auch

Externe Links

  • (und) RFC 1057: Spezifikation des Remote Procedure Call Protocol: Version 2
  • (und) RFC 1831: Remote Procedure Call Protocol Spezifikation: Version 2

Quelle