2010-04-28 17 views

Antwort

108

RPC ist C-basiert, und als solche hat es strukturierte Semantik Programmierung, auf der anderen Seite ist RMI eine Java-basierte Technologie und es ist objektorientiert. Mit RPC können Sie einfach Remote-Funktionen aufrufen, die in einen Server exportiert werden. In RMI können Sie Referenzen auf Remote-Objekte haben und deren Methoden aufrufen sowie weitere Remote-Objektverweise übergeben und zurückgeben, die auf viele JVM-Instanzen verteilt werden können es ist viel mächtiger.

RMI zeichnet sich aus, wenn die Notwendigkeit entsteht, etwas komplexer als eine reine Client-Server-Architektur zu entwickeln. Es ist sehr einfach, Objekte über ein Netzwerk zu verteilen, wodurch alle Clients kommunizieren können, ohne dass einzelne Verbindungen explizit hergestellt werden müssen.

+9

Das ist falsch. RPC ist ebenfalls Java-basiert. JAX-RPC 1.1 wurde durch 2.0 ersetzt, das dann in JAX-WS umbenannt wurde. Wenn Sie in Java über RPC sprechen, sprechen Sie über SOAP und Web Services. Hier ist ein IBM Artikel über JAX-RPC 1.1, der zu JAX-WS wechselt. http://www.ibm.com/developerworks/library/ws-tip-jaxwsrpc/ – MattC

+0

@MattC Ich denke, der Artikel, den Sie verlinkt haben, wies darauf hin, dass der Grund für diesen Namen von "JAX-RPC" zu "JAX-WS "Genau genommen war der ursprüngliche Name nicht korrekt, da diese Spezifikation mehr als nur" RPC "im herkömmlichen Sinne beinhaltete. Diese Antwort, die darüber spricht, was RPC traditionell bedeutet, ist immer noch richtig. –

+0

Ja, was ich meinte ist, dass RPC in der C/Unix-Welt entstanden ist (zumindest die am weitesten verbreitete RPC-Implementierung, ONCRPC) und als solches nach diesem Berechnungsmodell modelliert wurde; Natürlich hindert nichts daran, es über jede andere Programmiersprache zu implementieren – fortran

6

RMI oder Remote Method Invokation ist sehr ähnlich RPC oder Fern Prozeduraufruf, dass der Client sowohl Proxy-Objekte senden (oder stubs) zu der Server jedoch die subtile Unterschied, dass RPC Client-Seite ist ruft FUNKTIONEN über die Proxy-Funktion auf und RMI ruft METHODS über die Proxy-Funktion auf. RMI ist betrachtet etwas überlegen, wie es ist eine objektorientierte Version von RPC.

Von here.

Weitere Informationen und Beispiele finden Sie unter look here.

+5

Methode ist, was Funktionen in Java aufgerufen wird, Funktion ist, welche Methode in C/C++ aufgerufen wird. Also, was ist der Unterschied? – starcorn

+1

Ein Unterschied besteht darin, dass es (bei Instanzmethoden) ein aufrufendes Objekt gibt. Das aufrufende Objekt muss entweder (zusammen mit seinem Code) gesendet werden oder muss auf dem Entfernungsserver vorhanden sein, kann aber auf dem lokalen Server referenziert werden. –

+0

Ignorieren, wie bestimmte Programmiersprachen Methoden vs. Funktionen behandeln, bedeutet die literarische Bedeutung, dass Funktionen einen Wert zurückgeben, während Methoden den Status ändern. – Dan

31

Der Hauptunterschied zwischen RPC und RMI ist, dass RMI umfasst Objekte. Anstatt Prozeduren über einen Proxy mit der Funktion aus der Ferne aufzurufen, verwenden wir stattdessen einen Proxy Objekt.

Es gibt mehr Transparenz mit RMI, nämlich aufgrund der Ausbeutung von Objekten, Referenzen, Vererbung, Polymorphie und Ausnahmen, da die Technologie in die Sprache integriert ist.

RMI ist auch fortgeschrittenere als RPC, so dass für dynamischen Aufruf, wo Schnittstellen zur Laufzeit ändern, und Objekt Adaption, die eine zusätzliche Schicht der Abstraktion bereitstellt.

5

Der einzige wirkliche Unterschied zwischen RPC und RMI besteht darin, dass Objekte in RMI enthalten sind: anstatt Funktionen über eine Proxyfunktion aufzurufen, rufen wir Methoden über einen Proxy auf.

6

Der Unterschied zwischen RMI und RPC ist, dass:

  • RMI als Name Hervorrufen Remote Method zeigt: es ruft eine Methode oder ein Objekt.Und
  • RPC es ruft eine Funktion auf.
+1

Was sind die Unterschiede, die Sie implizit betonen, aber nicht zwischen einer 'Methode' und einer' Funktion' verdeutlichen? In Java gibt es keine Funktionen ... aber in OOP, soweit ich mich erinnern kann, sind sie Synonyme, und so sind "Aufruf" und "Aufruf". – mins

8

1. Ansatz:

RMI verwendet eine objektorientierte Paradigma, wo der Benutzer das Objekt und die Methode des Objekts wissen muss er aufrufen muss.

RPC behandelt keine Objekte. Es ruft vielmehr bestimmte Subroutinen auf, die bereits eingerichtet sind.

2. Arbeits:

Mit RPC Sie eine Prozeduraufruf erhalten, die ziemlich genau wie ein lokaler Anruf aussieht. RPC behandelt die Komplexität, die beim Weiterleiten des Anrufs von lokal an den Remotecomputer beteiligt sind.

RMI tut das Gleiche, aber RMI übergibt einen Verweis auf das Objekt und die Methode, die aufgerufen wird.

RMI = RPC + Objektorientierung

3. Besser ein:

RMI ist ein besserer Ansatz im Vergleich zu RPC, vor allem bei größeren Programmen, da es einen saubereren Code sieht vor, dass ist leichter zu erkennen, 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)

6

Remote Procedure Call (RPC) ist eine Kommunikation zwischen Prozessen, die es ermöglicht, eine Funktion in einem anderen Prozess aufzurufen, der sich auf der lokalen oder Remote-Maschine befindet.

Remote Method Invocation (RMI) ist eine API, die mit Unterstützung der objektorientierten Paradigmen RPC in Java implementiert.

  1. Sie können sich vorstellen, RPC aufzurufen ist wie das Aufrufen einer C-Prozedur. RPC unterstützt primitive Datentypen, wobei RMI Methodenparameter/Rückgabetypen als Java-Objekte unterstützt.

  2. RMI ist im Gegensatz zu RPC einfach zu programmieren. Sie können Ihre Geschäftslogik in Form von Objekten statt einer Abfolge primitiver Datentypen denken.

  3. RPC ist die Sprache im Gegensatz zu RMI neutral, die

  4. RMI ist etwas langsamer zu Java begrenzt ist

einen Blick auf diese in C für RPC-Implementierung article Haben RPC-

1

RMI oder Remotemethode Invokation ist dem RPC- oder Remoteprozeduraufruf sehr ähnlich, da der Client beide Proxyobjekte (oder Stubs) an den Server sendet. Der feine Unterschied ist jedoch, dass der RPC auf der Clientseite FUNCTIONS th anruft Grob die Proxy-Funktion und RMI ruft METHODS über die Proxy-Funktion auf. RMI wird als etwas überlegen angesehen, da es sich um eine objektorientierte Version von RPC handelt.

+0

Der Client sendet keine Proxy-Objekte (oder Stubs) an den Server in RPC oder RMI. Der Client hat ein * local * -Proxy-Objekt in RMI und eine Wrapper-Funktion in RPC. – EJP

2

RPC ist ein altes Protokoll, das auf C basiert. Es kann eine Remoteprozedur aufrufen und es wie einen lokalen Aufruf aussehen lassen. RPC verarbeitet die Komplexität des Weitergebens des Remoteaufrufs an den Server und das Abrufen des Ergebnisses an den Client.

Java RMI erreicht auch das Gleiche, aber leicht differently.It verwendet Verweise auf entfernte Objekte .So, was es tut, ist, dass es alongwith den Namen der Methode einen Verweis auf das entfernte Objekt sendet invoke.It ist besser, weil es bei großen Programmen saubereren Code ergibt und die Verteilung von Objekten über das Netzwerk ermöglicht es mehreren Clients, Methoden auf dem Server aufzurufen, anstatt jede Verbindung einzeln einzurichten.

Verwandte Themen