Empfohlen, 2024

Tipp Der Redaktion

Unterschied zwischen RPC und RMI

RPC und RMI sind die Mechanismen, die es einem Client ermöglichen, die Prozedur oder Methode vom Server aufzurufen, indem eine Kommunikation zwischen Client und Server hergestellt wird. Der allgemeine Unterschied zwischen RPC und RMI besteht darin, dass RPC nur die prozedurale Programmierung unterstützt , wohingegen RMI die objektorientierte Programmierung unterstützt .

Ein weiterer Hauptunterschied besteht darin, dass die Parameter, die an den Aufruf entfernter Prozeduren übergeben werden, aus normalen Datenstrukturen bestehen. Die an die entfernte Methode übergebenen Parameter bestehen dagegen aus Objekten .

Vergleichstabelle

Basis zum VergleichRPCRMI
UnterstütztVerfahrensprogrammierung
Objekt orientierte Programmierung
ParameterGewöhnliche Datenstrukturen werden an entfernte Prozeduren übergeben.Objekte werden an entfernte Methoden übergeben.
EffizienzNiedriger als RMIMehr als RPC und unterstützt durch einen modernen Programmieransatz (dh objektorientierte Paradigmen)
GemeinkostenMehr
Weniger vergleichsweise
In-Out-Parameter sind obligatorisch.JaNicht unbedingt
Einfachere Programmierung
Hoch
niedrig

Definition von RPC

Remote Procedure Call (RPC) ist eine Programmiersprachenfunktion, die für das verteilte Rechnen entwickelt wurde und auf der Semantik lokaler Prozeduraufrufe basiert. Es handelt sich hierbei um die gebräuchlichsten Formen von Remote-Diensten. Sie wurde entwickelt, um den Mechanismus für Prozeduraufrufe für die Verwendung zwischen Systemen zu isolieren, die über ein Netzwerk verbunden sind. Dies ähnelt dem IPC-Mechanismus, bei dem das Betriebssystem es den Prozessen ermöglicht, gemeinsam genutzte Daten zu verwalten und mit einer Umgebung umzugehen, in der verschiedene Prozesse auf separaten Systemen ausgeführt werden und notwendigerweise eine nachrichtenbasierte Kommunikation erfordern.

Verstehen wir, wie RPC durch die angegebenen Schritte implementiert wird:

  • Der Clientprozess ruft den Client-Stub mit Parametern auf und seine Ausführung wird ausgesetzt, bis der Aufruf abgeschlossen ist.
  • Die Parameter werden dann durch marshalling durch Client-Stub in eine maschinenunabhängige Form übersetzt. Dann wird die Nachricht vorbereitet, die die Darstellung der Parameter enthält.
  • Um die Identität des Standorts zu ermitteln, kommuniziert der Client-Stub mit dem Namenserver, auf dem die Remoteprozedur vorhanden ist.
  • Bei Verwendung des Blockierungsprotokolls sendet der Client-Stub die Nachricht an den Standort, an dem ein Remoteprozeduraufruf vorhanden ist. Dieser Schritt hält den Client-Stub an, bis er eine Antwort erhält.
  • Der Server-Standort empfängt die von der Clientseite gesendete Nachricht und konvertiert sie in ein maschinenspezifisches Format.
  • Jetzt führt der Server-Stub zusammen mit den Parametern einen Aufruf auf der Serverprozedur aus, und der Server-Stub wird unterbrochen, bis die Prozedur abgeschlossen ist.
  • Die Serverprozedur gibt die generierten Ergebnisse an den Server-Stub zurück, und die Ergebnisse werden beim Server-Stub in ein maschinenunabhängiges Format konvertiert und erstellen eine Nachricht mit den Ergebnissen.
  • Die Ergebnisnachricht wird an den Client-Stub gesendet, der wieder in ein für den Client-Stub geeignetes maschinenspezifisches Format konvertiert wird.
  • Beim letzten Client gibt Stub die Ergebnisse an den Clientprozess zurück.

Definition von RMI

Remote Method Invocation (RMI) ähnelt RPC, ist jedoch sprachspezifisch und eine Funktion von Java. Ein Thread darf die Methode für ein Remote-Objekt aufrufen. Um die Transparenz auf Client- und Serverseite zu gewährleisten, werden Remote-Objekte mithilfe von Stubs und Skeletten implementiert. Der Stub befindet sich beim Client und verhält sich für das Remote-Objekt als Proxy.

Wenn ein Client eine Remote-Methode aufruft, wird der Stub für die Remote-Methode aufgerufen. Der Client-Stub ist für das Erstellen und Senden des Pakets verantwortlich, das den Namen einer Methode und die aufgerufenen Parameter enthält, und das Gerüst ist für das Empfangen des Pakets verantwortlich.

Das Skelett gibt das Marshalling von Parametern frei und ruft die gewünschte Methode auf dem Server auf. Das Skelett marshallt den angegebenen Wert (oder die Ausnahmen) mit dem Paket und sendet ihn an den Client-Stub. Der Stub stellt das Rücksendepaket zusammen und sendet es an den Client.

In Java werden die Parameter an Methoden übergeben und als Referenz zurückgegeben. Dies kann für den RMI-Dienst mühsam sein, da möglicherweise nicht alle Objekte entfernte Methoden sind. Es muss also festgelegt werden, welche als Referenz übergeben werden können und welche nicht.

Java verwendet einen als Serialisierung bezeichneten Prozess, bei dem die Objekte als Wert übergeben werden. Das entfernte Objekt wird durch Wert nach Wert lokalisiert. Es kann auch ein Objekt als Referenz übergeben, indem eine Remote-Referenz mit der URL der Stub-Klasse an das Objekt übergeben wird. Über Referenz verweisen schränkt einen Stub für das entfernte Objekt ein.

Hauptunterschiede zwischen RPC und RMI

  1. RPC unterstützt prozedurale Programmierparadigmen, ist also C-basiert, während RMI objektorientierte Programmierparadigmen unterstützt und Java-basiert ist.
  2. Die Parameter, die an Remoteprozeduren in RPC übergeben werden, sind die üblichen Datenstrukturen. Im Gegensatz dazu überträgt RMI Objekte als Parameter an die entfernte Methode.
  3. RPC kann als ältere Version von RMI betrachtet werden und wird in den Programmiersprachen verwendet, die die prozedurale Programmierung unterstützen, und es kann nur die Methode "Durch Wert" verwendet werden. Im Gegensatz dazu ist die RMI-Einrichtung auf der Grundlage eines modernen Programmieransatzes konzipiert, der Wert- oder Referenzwert verwenden kann. Ein weiterer Vorteil von RMI ist, dass die als Referenz übergebenen Parameter geändert werden können.
  4. Das RPC-Protokoll erzeugt mehr Overheads als RMI.
  5. Die in RPC übergebenen Parameter müssen " in-out " sein. Dies bedeutet, dass der an die Prozedur übergebene Wert und der Ausgabewert die gleichen Datentypen haben müssen. Im Gegensatz dazu gibt es keinen Zwang, In-Out- Parameter in RMI zu übergeben.
  6. In RPC konnten Verweise nicht wahrscheinlich sein, da die beiden Prozesse den unterschiedlichen Adressraum haben, im Fall von RMI ist dies jedoch möglich.

Fazit

Sowohl RPC als auch RMI dienen demselben Zweck, werden jedoch in Sprachen verwendet und unterstützen unterschiedliche Programmierparadigmen. Sie verfügen daher über unterschiedliche Funktionen.

Top