2010-04-28 17 views

Respuesta

108

RPC está basado en C, y como tal tiene una semántica de programación estructurada, en el otro lado, RMI es una tecnología basada en Java y está orientada a objetos.

Con RPC puede simplemente llamar a funciones remotas exportadas a un servidor, en RMI puede tener referencias a objetos remotos e invocar sus métodos, y también pasar y devolver referencias de objetos más remotas que se pueden distribuir entre muchas instancias de JVM, por lo es mucho más poderoso.

RMI se destaca cuando surge la necesidad de desarrollar algo más complejo que una arquitectura de cliente-servidor pura. Es muy fácil distribuir objetos a través de una red, lo que permite que todos los clientes se comuniquen sin tener que establecer conexiones individuales explícitamente.

+9

Esto es incorrecto. RPC también se basa en Java. JAX-RPC 1.1 fue reemplazado por 2.0, que luego fue renombrado JAX-WS. En Java, cuando habla de RPC, habla de SOAP y servicios web. Aquí hay un artículo de IBM sobre JAX-RPC 1.1 cambiando a JAX-WS. http://www.ibm.com/developerworks/library/ws-tip-jaxwsrpc/ – MattC

+0

@MattC Creo que el artículo con el que se vinculó señaló que el motivo de este nombre cambia de "JAX-RPC" a "JAX-WS". "es exactamente que el nombre original no era exacto, ya que esta especificación involucraba más que solo" RPC "en un sentido tradicional. Entonces esta respuesta, que habla sobre lo que RPC tradicionalmente significa, sigue siendo correcta. –

+0

sí, lo que quise decir es que RPC se originó en el mundo de C/Unix (al menos la implementación de RPC más común, ONCRPC) y, como tal, se modela después de ese modelo de cálculo; por supuesto, nada impide implementarlo encima de cualquier otro lenguaje de programación – fortran

6

RMI o de método remoto invocación es muy similar a la llamada Procedimiento RPC o remota en que el cliente tanto enviar objetos proxy (o talones) a el servidor sin embargo la sutil diferencia es que RPC lado del cliente invoca FUNCIONES a través de la función proxy y RMI invoca MÉTODOS a través de la función de proxy. RMI es considerado ligeramente superior, ya que es una versión orientada a objetos de RPC.

De here.

Para obtener más información y ejemplos, tener un look here.

+5

método es qué funciones se llaman en java, función es qué método se llama en c/C++. Entonces, ¿cuál es la diferencia? – starcorn

+1

Una diferencia es que (en el caso de los métodos de instancia), hay un objeto invocado. El objeto de invocación necesita ser enviado (junto con su código) o necesita vivir en el servidor de eliminación, pero tiene una manera de ser referenciado en el servidor local. –

+0

Ignorando cómo los lenguajes de programación específicos tratan los métodos frente a las funciones, el significado literario es que las funciones devuelven un valor mientras que los métodos modifican el estado. – Dan

31

La principal diferencia entre RPC y RMI es que RMI implica objetos. En lugar de llamar procedimientos remotamente mediante el uso de una función de proxy , en su lugar usamos un proxy objeto.

Existe una mayor transparencia con RMI, principalmente debido a la explotación de objetos, referencias, herencia, polimorfismo y excepciones, ya que la tecnología está integrada en el lenguaje.

RMI también es más avanzada que la RPC, lo que permite invocación dinámica, en donde las interfaces pueden cambiar en tiempo de ejecución, y adaptación objeto, que proporciona una capa adicional de abstracción.

5

La única diferencia real entre RPC y RMI es que hay objetos involucrados en RMI: en lugar de invocar funciones a través de una función proxy, invocamos métodos a través de un proxy.

6

La diferencia entre RMI y RPC es que:

  • RMI como su nombre indica Invocación de Método Remoto: se invoca un método o un objeto.Y
  • RPC invoca una función.
+1

¿Cuáles son las diferencias que enfatiza implícitamente, pero no aclara, entre un "método" y una "función"? En Java no hay funciones ... pero en OOP, hasta donde puedo recordar, son sinónimos, y también lo son 'invocation' y' call'. – mins

8

1. Enfoque:

RMI utiliza un paradigma orientado a objetos, donde el usuario tiene que conocer el objeto y el método del objeto que tiene que invocar.

RPC no se ocupa de objetos. Por el contrario, llama a subrutinas específicas que ya están establecidas.

2. Trabajo:

Con RPC, se obtiene una llamada de procedimiento que se ve más o menos como una llamada local. RPC maneja las complejidades involucradas al pasar la llamada de la computadora local a la remota.

RMI hace exactamente lo mismo, pero RMI pasa una referencia al objeto y al método que se está llamando.

RMI = RPC + La orientación a objetos

3. Mejor uno:

RMI es un enfoque mejor en comparación con RPC, especialmente con programas más grandes, ya que proporciona un código de producto de limpieza que es más fácil de identificar si algo sale mal.

4. Ejemplos del sistema:

RPC de sistemas: Sun RPC, DCE RPC

RMI Sistemas: Java RMI, CORBA, Microsoft DCOM/COM +, SOAP (Simple Object Access Protocolo)

6

llamada a procedimiento remoto (RPC) es una comunicación entre procesos que permite llamar a una función en otro proceso que reside en una máquina local o remota.

invocación de método remoto (RMI) es un API, que implementa RPC en Java con el apoyo de los paradigmas orientados a objetos.

  1. Puede pensar en invocar RPC es como llamar a un procedimiento en C. RPC admite tipos de datos primitivos donde RMI admite parámetros de método/tipos de retorno como objetos Java.

  2. RMI es fácil de programar a diferencia de RPC. Puede pensar la lógica de su negocio en términos de objetos en lugar de una secuencia de tipos de datos primitivos.

  3. RPC es un lenguaje neutro a diferencia de RMI, que se limita a java

  4. RMI es poco más lento a RPC

Tener un vistazo a este article para la implementación de RPC en C

1

RMI o Remote Method Invokation es muy similar a RPC o Remote Procedure call porque el cliente envía objetos proxy (o stubs) al servidor, pero la sutil diferencia es que el cliente RPC invoca FUNCIONES th Rough la función proxy y RMI invoca METHODS a través de la función de proxy. RMI se considera ligeramente superior ya que es una versión orientada a objetos de RPC.

+0

El cliente no 'envía objetos proxy (o stubs) al servidor' en RPC o RMI. El cliente tiene un objeto proxy * local * en RMI y una función de contenedor en RPC. – EJP

2

RPC es un protocolo antiguo basado en C.Puede invocar un procedimiento remoto y hacer que parezca una llamada local.RPC maneja las complejidades de pasar esa invocación remota al servidor y obtener el resultado para el cliente.

Java RMI también logra lo mismo pero un poco differently.It utiliza referencias a objetos remotos .Así, lo que hace es que envía una referencia al objeto remoto alongwith el nombre del método que invocar. Es mejor porque da como resultado un código más limpio en el caso de programas grandes y también la distribución de objetos a través de la red permite que múltiples clientes invoquen métodos en el servidor en lugar de establecer cada conexión individualmente.

Cuestiones relacionadas