Unterschied zwischen RPC und RMI

Autor: Laura McKinney
Erstelldatum: 1 April 2021
Aktualisierungsdatum: 15 Kann 2024
Anonim
Was ist ein Remote Procedure Call? RPC, gRPC, OpenAPI, ...
Video: Was ist ein Remote Procedure Call? RPC, gRPC, OpenAPI, ...

Inhalt


RPC und RMI sind die Mechanismen, mit denen ein Client die Prozedur oder Methode vom Server aus aufrufen kann, indem er die Kommunikation zwischen Client und Server herstellt. Der gemeinsame Unterschied zwischen RPC und RMI besteht darin, dass RPC nur unterstützt Verfahrensprogrammierung während RMI unterstützt Objekt orientierte Programmierung.

Ein weiterer Hauptunterschied zwischen den beiden besteht darin, dass die an den Remoteprozeduraufruf übergebenen Parameter aus bestehen gewöhnliche Datenstrukturen. Andererseits bestehen die an die entfernte Methode übergebenen Parameter aus Objekte.

  1. Vergleichstabelle
  2. Definition
  3. Hauptunterschiede
  4. Fazit

Vergleichstabelle

VergleichsbasisRPCRMI
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 modernen Programmieransatz (d. H. Objektorientierte Paradigmen)
GemeinkostenMehr
Weniger vergleichsweise
In-Out-Parameter sind obligatorisch.JaNicht unbedingt
Erleichterung der Programmierung
Hoch
niedrig


Definition von RPC

Remote Procedure Call (RPC) ist eine Programmiersprache, die für das verteilte Rechnen entwickelt wurde und auf der Semantik von basiert lokales Verfahren Anrufe. Dies ist die am häufigsten verwendete Form von Remote-Diensten und wurde entwickelt, um den Prozeduraufrufmechanismus für die Verwendung zwischen über ein Netzwerk verbundenen Systemen zu abstrahieren. Es ä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 Kommunikation auf Basis von Daten erforderlich ist.

Lassen Sie uns verstehen, wie RPC mithilfe der folgenden Schritte implementiert wird:

  • Der Client-Prozess ruft den Client-Stub mit Parametern auf und die Ausführung wird ausgesetzt, bis der Aufruf abgeschlossen ist.
  • Die Parameter werden dann durch Marshalling über Client-Stub in eine maschinenunabhängige Form übersetzt. Dann wird das vorbereitet, welches die Darstellung der Parameter enthält.
  • Um die Identität des Standorts zu ermitteln, kommuniziert der Client-Stub mit dem Nameserver, auf dem die Remote-Prozedur vorhanden ist.
  • Unter Verwendung des Blockierungsprotokolls leitet der Client den Stub an die Site weiter, an der der Remoteprozeduraufruf vorhanden ist. In diesem Schritt wird der Client-Stub angehalten, bis eine Antwort eingeht.


  • Der Server-Standort empfängt die vom Client gesendeten Daten und konvertiert sie in ein maschinenspezifisches Format.
  • Jetzt führt der Server-Stub zusammen mit den Parametern einen Aufruf der Server-Prozedur 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 am Server-Stub in ein maschinenunabhängiges Format konvertiert und enthalten die Ergebnisse.
  • Das Ergebnis 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 Client-Prozess zurück.

Definition von RMI

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

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

Das Gerüst hebt das Marshallen von Parametern auf und ruft die gewünschte Methode auf dem Server auf. Das Skelett marshallt den angegebenen Wert (oder die Ausnahmen) mit dem Paket und sendet es an den Client-Stub. Der Stub setzt das Retourenpaket wieder zusammen und sendet es an den Kunden.

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

Java verwendet den Prozess mit dem Namen Serialisierung wo die Objekte als Wert übergeben werden. Das entfernte Objekt wird durch Übergabe von Werten lokalisiert. Sie können ein Objekt auch als Referenz übergeben, indem Sie eine ferne Referenz zusammen mit der URL der Stub-Klasse an das Objekt übergeben. Durch Referenzübergabe wird ein Stub für das entfernte Objekt eingeschränkt.

  1. RPC unterstützt somit prozedurale Programmierparadigmen auf C-Basis, während RMI objektorientierte Programmierparadigmen unterstützt und auf Java basiert.
  2. Die in RPC an entfernte Prozeduren übergebenen Parameter sind die normalen Datenstrukturen. Im Gegenteil, RMI überträgt 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. Es kann nur die Methode "Übergeben nach Wert" verwendet werden. Im Gegensatz dazu basiert die RMI-Funktion auf einem modernen Programmieransatz, bei dem die Übergabe nach Wert oder Referenz verwendet werden kann. Ein weiterer Vorteil von RMI ist, dass die per Referenz übergebenen Parameter geändert werden können.
  4. Das RPC-Protokoll generiert mehr Overhead als RMI.
  5. Die in RPC übergebenen Parameter müssen „in-out”Was bedeutet, dass der an die Prozedur übergebene Wert und der Ausgabewert die gleichen Datentypen haben müssen. Im Gegensatz dazu gibt es keinen Zwang zum Bestehen. “in-out”Parameter in RMI.
  6. In RPC konnten Verweise nicht wahrscheinlich sein, da die beiden Prozesse über einen unterschiedlichen Adressraum verfügen, dies ist jedoch bei RMI möglich.

Fazit

Sowohl RPC als auch RMI dienen demselben Zweck, werden jedoch in Sprachen verwendet, die unterschiedliche Programmierparadigmen unterstützen, und weisen daher unterschiedliche Merkmale auf.