Unterschied zwischen RPC und RMI

RPC vs. RMI
 

Der grundlegende Unterschied zwischen RPC und RMI besteht darin, dass RPC ein Mechanismus ist, der den Aufruf einer Prozedur auf einem Remotecomputer ermöglicht, während RMI die Implementierung von RPC in Java ist. RPC ist sprachneutral, unterstützt jedoch nur die Übergabe primitiver Datentypen. Andererseits ist RMI auf Java beschränkt, erlaubt jedoch das Übergeben von Objekten. RPC folgt traditionellen prozeduralen Sprachkonstrukten, während RMI objektorientiertes Design unterstützt.

Was ist RPC??

RPC (Remote Procedure Call) ist eine Art Kommunikation zwischen Prozessen. Dies ermöglicht den Aufruf einer Funktion in einem anderen Prozess, der auf dem lokalen Computer oder einem Remote-Computer ausgeführt wird. Dieses Konzept entstand vor langer Zeit im Jahr 1980, aber die erste bekannte Implementierung wurde in Unix gesehen.

RPC umfasst mehrere Schritte. Der Client führt wie üblich einen Prozeduraufruf auf dem lokalen Computer aus. Das als Client-Stub bezeichnete Modul sammelt die Argumente und erstellt eine Nachricht und leitet sie an das Betriebssystem weiter. Das Betriebssystem führt einen Systemaufruf aus und sendet diese Nachricht an den Remote-Computer. Das Betriebssystem auf dem Server sammelt die Nachricht und leitet sie an das Modul auf dem Server mit der Bezeichnung Server-Stub weiter. Der Server-Stub ruft dann die Prozedur auf dem Server auf. Schließlich werden die Ergebnisse an den Client zurückgesendet.

Die Verwendung von RPC hat den Vorteil, dass es unabhängig von den Netzwerkdetails ist. Der Programmierer muss nur abstrakt angeben, während das Betriebssystem sich um die internen Netzwerkdetails kümmert. Dies erleichtert die Programmierung und ermöglicht die Verwendung von RPC in jedem Netzwerk trotz physikalischer und protokollbezogener Unterschiede. RPC-Implementierungen sind in allen gängigen Betriebssystemen wie Unix, Linux, Windows und OS X vorhanden. RPC ist im Allgemeinen sprachneutral. Daher sind die Datentypen auf die primitivsten beschränkt, da sie allen Sprachen gemeinsam sein müssen. Der Ansatz in RPC ist nicht objektorientiert, sondern ein traditioneller Verfahrensmechanismus wie in C.

Was ist RMI??

RMI (Remote Method Invocation) ist eine API (Application Programming Interface), die RPC in Java implementiert, um die objektorientierte Natur zu unterstützen. Dies ermöglicht das Aufrufen von Java-Methoden auf einer anderen Java Virtual-Maschine, die sich auf demselben oder einem entfernten Computer befindet. Die Einschränkung von RMI besteht darin, dass nur Java-Methoden aufgerufen werden können. Dies hat jedoch den Vorteil, dass Objekte als Argumente und Rückgabewerte übergeben werden können. Wenn Leistung in Betracht gezogen wird, ist RMI aufgrund der Beteiligung von Bytecode auf der Java Virtual-Maschine langsamer als RPC, aber RMI ist sehr programmiererfreundlich und sehr einfach zu verwenden.

RMI verwendet in Java integrierte Sicherheitsmechanismen und stellt außerdem eine Socket-Factory bereit, die die Verwendung von Protokollen für die benutzerdefinierte Transportschicht außerhalb von TCP ermöglicht. Darüber hinaus bietet RMI Methoden zum Umgehen von Firewalls. Die Schritte, die in RMI auftreten, ähneln RPC. Die Implementierung von RMI kümmert sich um die internen Netzwerkdetails, bei denen sich der Programmierer nicht darum kümmern muss.

Was ist der Unterschied zwischen RPC und RMI??

• RPC ist sprachneutral, während RMI auf Java beschränkt ist.

• RPC ist wie in C prozedural, aber RMI ist objektorientiert.

• RPC unterstützt nur primitive Datentypen, während mit RMI Objekte als Argumente und Rückgabewerte übergeben werden können. Bei Verwendung von RPC muss der Programmierer alle zusammengesetzten Objekte in primitive Datentypen aufteilen.

• RMI ist leicht zu programmieren.

• RMI ist langsamer als RPC, da bei RMI Java-Bytecode ausgeführt wird.

• RMI ermöglicht die Verwendung von Entwurfsmustern aufgrund der objektorientierten Natur, während RPC diese Fähigkeit nicht aufweist.

Zusammenfassung:

RPC vs. RMI

RPC ist ein sprachneutraler Mechanismus, mit dem eine Prozedur auf einem Remote-Computer aufgerufen werden kann. Die sprachneutrale Funktion beschränkt jedoch die Datentypen, die als Argumente übergeben werden, und gibt Werte an primitive Typen zurück. RMI ist die Implementierung von RPC in Java und unterstützt auch die Objektübergabe, wodurch das Leben des Programmierers vereinfacht wird. Der Vorteil von RMI ist die objektorientierte Designunterstützung, die Einschränkung auf Java ist jedoch ein Nachteil.

Bilder mit freundlicher Genehmigung:

  1. Synchron gegen asynchrone RPC von CAPS entreprise (CC BY-SA 3.0)