Der grundlegende Unterschied zwischen RPC und RMI besteht darin, dass RPC ein Mechanismus ist, der es ermöglicht, ein Verfahren auf einem Remote -Computer aufzurufen, während RMI die Implementierung von RPC in Java ist. RPC ist Sprachneutral, unterstützt jedoch nur primitive Datentypen, die übergeben werden sollen. Andererseits ist RMI auf Java beschränkt, ermöglicht jedoch das Übergeben von Objekten. RPC folgt traditionelle prozedurale Sprachkonstrukte, während RMI objektorientiertes Design unterstützt.
RPC, das für Remote Procedure Call steht, ist eine Art von Inter-Process-Kommunikation. Dadurch kann das Aufrufen einer Funktion in einem anderen Prozess auf dem lokalen Computer oder einem Remote -Computer aufgerufen werden. Dieses Konzept ist vor langer Zeit im Jahr 1980 entstanden, aber die erste berühmte Umsetzung war in Unix zu sehen.
RPC umfasst mehrere Schritte. Der Kunde führt wie gewohnt einen Verfahrensanruf auf dem lokalen Computer durch. Das Modul namens Client Stub sammelt die Argumente und erstellt eine Nachricht und übergibt an das Betriebssystem. Das Betriebssystem führt einen Systemanruf durch und sendet diese Nachricht an den Remote -Computer. Das Betriebssystem auf dem Server sammelt die Nachricht und übergibt an das Modul auf dem Server, der als Serverstub bezeichnet wird. Dann ruft der Server Stub die Prozedur auf dem Server auf. Schließlich werden die Ergebnisse an den Kunden zurückgesandt.
Der Vorteil der Verwendung von RPC besteht darin, dass es in den Netzwerkdetails unabhängig ist. Der Programmierer muss nur abstrakt angeben, während das Betriebssystem die internen Netzwerkdetails betreut wird. Dies erleichtert die Programmierung und lässt RPC trotz der physischen und Protokollunterschiede in einem beliebigen Netzwerk arbeiten. RPC -Implementierungen sind in allen Mainstream -Betriebssystemen wie Unix, Linux, Windows und OS X vorhanden. RPC ist im Allgemeinen Sprachneutral, daher begrenzt es die Datentypen auf die primitivsten, da sie allen Sprachen gemeinsam sein müssen. Der Ansatz in RPC ist nicht objektorientiert, aber ein traditioneller Verfahrensmechanismus wie in C.
RMI, das für den Remote -Methode -Aufruf steht, 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 auf demselben Computer oder einer Remote liegt. Die Einschränkung von RMI besteht darin, dass nur Java -Methoden aufgerufen werden können. Dies ist jedoch mit dem Vorteil verbunden, dass Objekte als Argumente und Rückgabeträger übergeben werden können. Wenn die Leistung als RMI als RPC angesehen wird.
RMI verwendet eingebaute Sicherheitsmechanismen in Java und gibt auch eine Sockelfabrik, die die Verwendung von nicht-TCP-Custom-Transportschichtprotokollen ermöglicht. Darüber hinaus bietet RMI Methoden zur Umgehung von Firewalls. Die in RMI auftretenden Schritte ähneln RPC. Die Implementierung von RMI kümmert sich um die internen Netzwerkdetails, bei denen der Programmierer sich keine Sorgen machen muss.
• 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 RMI erlaubt, dass Objekte als Argumente und Rückgabewerte übergeben werden können. Bei der Verwendung von RPC muss der Programmierer zusammengesetzte Objekte in primitive Datentypen teilen.
• RMI ist einfach zu programmieren, dass RPC.
• RMI ist langsamer als RPC, da RMI die Ausführung von Java -Bytecode umfasst.
• RMI ermöglicht die Verwendung von Entwurfsmustern aufgrund der objektorientierten Natur, während RPC diese Fähigkeit nicht hat.
Zusammenfassung:
RPC ist ein sprachneutraler Mechanismus, der das Aufrufen eines Verfahrens auf einem Remote -Computer ermöglicht. Das Sprachneutral -Merkmal begrenzt jedoch die Datentypen, die als Argumente und Rückgabewerte an primitive Typen übergeben werden. RMI ist die Implementierung von RPC in Java und unterstützt auch das Übergeben von Objekten, wodurch das Leben des Programmierers erleichtert wird. Der Vorteil von RMI ist die objektorientierte Designunterstützung, aber die Einschränkung für Java ist ein Nachteil.
Bilder mit freundlicher Genehmigung: