Antworten:
RPC ist C-basiert und hat als solches eine strukturierte Programmiersemantik. Auf der anderen Seite ist RMI eine Java-basierte Technologie und objektorientiert.
Mit RPC können Sie einfach Remote-Funktionen aufrufen, die in einen Server exportiert wurden. In RMI können Sie Verweise auf Remote-Objekte haben und deren Methoden aufrufen sowie weitere Remote-Objektreferenzen übergeben und zurückgeben, die auf viele JVM-Instanzen verteilt werden können, sodass sie viel leistungsfähiger sind .
RMI fällt auf, wenn die Notwendigkeit besteht, etwas Komplexeres als eine reine Client-Server-Architektur zu entwickeln. Es ist sehr einfach, Objekte über ein Netzwerk zu verteilen, sodass alle Clients kommunizieren können, ohne einzelne Verbindungen explizit herstellen zu müssen.
Der Hauptunterschied zwischen RPC und RMI besteht darin, dass RMI Objekte umfasst . Anstatt Prozeduren mithilfe einer Proxy- Funktion remote aufzurufen , verwenden wir stattdessen ein Proxy- Objekt .
RMI bietet eine größere Transparenz, und zwar aufgrund der Ausnutzung von Objekten, Referenzen, Vererbung, Polymorphismus und Ausnahmen, wenn die Technologie in die Sprache integriert wird.
RMI ist auch weiter fortgeschritten als RPC und ermöglicht einen dynamischen Aufruf , bei dem sich die Schnittstellen zur Laufzeit ändern können, sowie eine Objektanpassung , die eine zusätzliche Abstraktionsebene bietet.
1. Ansatz:
RMI verwendet ein objektorientiertes Paradigma, bei dem der Benutzer das Objekt und die Methode des Objekts kennen muss, das er aufrufen muss.
RPC befasst sich nicht mit Objekten. Vielmehr werden bestimmte Subroutinen aufgerufen, die bereits eingerichtet sind.
2. Arbeiten:
Mit RPC erhalten Sie einen Prozeduraufruf, der einem lokalen Aufruf ziemlich ähnlich sieht. RPC behandelt die Komplexität, die mit der Weiterleitung des Anrufs vom lokalen an den Remotecomputer verbunden ist.
RMI macht genau das Gleiche, aber RMI übergibt einen Verweis auf das Objekt und die Methode, die aufgerufen wird.
RMI = RPC + Objektorientierung
3. Besser:
RMI ist ein besserer Ansatz als RPC, insbesondere bei größeren Programmen, da es einen saubereren Code bietet, der leichter zu identifizieren ist, wenn etwas schief geht.
4. Systembeispiele:
RPC-Systeme: SUN RPC, DCE RPC
RMI-Systeme: Java RMI, CORBA, Microsoft DCOM / COM +, SOAP (Simple Object Access Protocol)
Remote Procedure Call (RPC) ist eine prozessübergreifende Kommunikation, mit der eine Funktion in einem anderen Prozess aufgerufen werden kann, der sich auf einem lokalen oder Remote-Computer befindet.
Remote Method Invocation (RMI) ist eine API, die RPC in Java mit Unterstützung objektorientierter Paradigmen implementiert.
Sie können sich vorstellen, RPC aufzurufen, als würden Sie eine C-Prozedur aufrufen. RPC unterstützt primitive Datentypen, wobei RMI Methodenparameter / Rückgabetypen als Java-Objekte unterstützt.
RMI ist im Gegensatz zu RPC einfach zu programmieren. Sie können Ihre Geschäftslogik in Objekten anstatt in einer Folge primitiver Datentypen denken.
RPC ist im Gegensatz zu RMI, das auf Java beschränkt ist, sprachneutral
RMI ist etwas langsamer als RPC
In diesem Artikel finden Sie Informationen zur RPC-Implementierung in C.
RMI oder Remote Method Invokation ist dem RPC- oder Remote Procedure-Aufruf sehr ähnlich, da der Client beide Proxy-Objekte (oder Stubs) an den Server sendet. Der subtile Unterschied besteht jedoch darin, dass clientseitige RPC FUNCTIONS über die Proxy-Funktion aufrufen und RMI METHODS über die Proxy-Funktion. RMI wird als etwas überlegen angesehen, da es sich um eine objektorientierte Version von RPC handelt.
Von hier aus .
Weitere Informationen und Beispiele finden Sie hier .
Der Unterschied zwischen RMI und RPC besteht darin, dass:
method
und a function
? In Java gibt es keine Funktionen ... aber in OOP sind sie, soweit ich mich erinnern kann, Synonyme, und das sind sie auchinvocation
und call
.
RPC ist ein altes Protokoll, das auf C. basiert. Es kann eine Remote-Prozedur aufrufen und sie wie einen lokalen Aufruf aussehen lassen. RPC behandelt die Komplexität, diesen Remote-Aufruf an den Server zu übergeben und das Ergebnis an den Client zu senden.
Java RMI erreicht dasselbe, jedoch etwas anders. Es verwendet Verweise auf entfernte Objekte. Es sendet also einen Verweis auf das entfernte Objekt zusammen mit dem Namen der aufzurufenden Methode. Es ist besser, weil es sauberer führt Durch den Code bei großen Programmen und die Verteilung von Objekten über das Netzwerk können mehrere Clients Methoden auf dem Server aufrufen, anstatt jede Verbindung einzeln herzustellen.
RMI
in Java ist so etwas wiegRPC
in .Net ...