Recomendado, 2024

La Elección Del Editor

Diferencia entre RPC y RMI

RPC y RMI son los mecanismos que permiten a un cliente invocar el procedimiento o método desde el servidor a través del establecimiento de la comunicación entre el cliente y el servidor. La diferencia común entre RPC y RMI es que RPC solo admite la programación de procedimientos, mientras que RMI admite la programación orientada a objetos .

Otra diferencia importante entre los dos es que los parámetros pasados ​​a la llamada a procedimientos remotos consisten en estructuras de datos ordinarias . Por otro lado, los parámetros pasados ​​al método remoto consisten en objetos .

Gráfica comparativa

Bases para la comparaciónRPCRMI
AyudasProgramación procesal
Programación orientada a objetos
ParámetrosLas estructuras de datos ordinarios se pasan a procedimientos remotos.Los objetos se pasan a métodos remotos.
EficienciaMás bajo que RMIMás que RPC y con un enfoque de programación moderno (es decir, paradigmas orientados a objetos)
Gastos generalesMás
Menos comparativamente
Los parámetros de entrada y salida son obligatorios.No necesariamente
Facilitación de la facilidad de programación.
Alto
bajo

Definición de RPC

La llamada a procedimiento remoto (RPC) es una función de lenguaje de programación diseñada para la computación distribuida y basada en la semántica de las llamadas a procedimientos locales . Es la forma más común de servicio remoto y se diseñó como una forma de abstraer el mecanismo de llamada de procedimiento para usar entre sistemas conectados a través de una red. Es similar al mecanismo de IPC en el que el sistema operativo permite que los procesos gestionen los datos compartidos y se ocupen de un entorno en el que los diferentes procesos se ejecutan en sistemas separados y necesariamente requieren comunicación basada en mensajes.

Entendamos cómo se implementa RPC a través de los pasos dados:

  • El proceso del cliente llama al apéndice del cliente con parámetros, y su ejecución se suspende hasta que se completa la llamada.
  • Luego, los parámetros se traducen a una forma independiente de la máquina mediante la ordenación a través del talón del cliente. Luego se prepara el mensaje que contiene la representación de los parámetros.
  • Para encontrar la identidad del sitio, el apéndice del cliente se comunica con el servidor de nombres en el que existe el procedimiento remoto.
  • Al usar el protocolo de bloqueo, el apéndice del cliente envía el mensaje al sitio donde existe la llamada a un procedimiento remoto. Este paso detiene el apéndice del cliente hasta que reciba una respuesta.
  • El sitio del servidor recibe el mensaje enviado desde el lado del cliente y lo convierte en un formato específico de la máquina.
  • Ahora el apéndice del servidor ejecuta una llamada en el procedimiento del servidor junto con los parámetros, y el apéndice del servidor se suspende hasta que el procedimiento se completa.
  • El procedimiento del servidor devuelve los resultados generados al apéndice del servidor, y los resultados se convierten a un formato independiente de la máquina en el apéndice del servidor y crean un mensaje que contiene los resultados.
  • El mensaje de resultado se envía al talón del cliente que se convierte nuevamente a un formato específico de la máquina adecuado para el talón del cliente.
  • En el último cliente, el código auxiliar devuelve los resultados al proceso del cliente.

Definición de RMI

La invocación de método remoto (RMI) es similar a RPC pero es específica del idioma y una característica de Java. Se permite que un hilo llame al método en un objeto remoto. Para mantener la transparencia en el lado del cliente y del servidor, implementa objetos remotos utilizando apéndices y esqueletos. El código auxiliar reside en el cliente y, para el objeto remoto, se comporta como un proxy.

Cuando un cliente llama a un método remoto, se llama al código auxiliar del método remoto. El talón del cliente es responsable de crear y enviar el paquete que contiene el nombre de un método y los parámetros calculados, y el esqueleto es responsable de recibir el paquete.

El esqueleto desata parámetros e invoca el método deseado en el servidor. El esqueleto calcula el valor dado (o las excepciones) con el paquete y lo envía al talón del cliente. El talón vuelve a montar el paquete de devolución y lo envía al cliente.

En Java, los parámetros se pasan a los métodos y se devuelven en forma de referencia. Esto podría ser problemático para el servicio de RMI ya que no todos los objetos son posiblemente métodos remotos. Por lo tanto, debe determinar qué se podría pasar como referencia y cuáles no.

Java utiliza el proceso denominado como serialización donde los objetos se pasan como valor. El objeto remoto se localiza por pase por valor. También puede pasar un objeto por referencia pasando una referencia remota al objeto junto con la URL de la clase de código auxiliar. Pasar por referencia restringe un código auxiliar para el objeto remoto.

Diferencias clave entre RPC y RMI

  1. RPC admite los paradigmas de programación de procedimientos, por lo tanto, está basado en C, mientras que RMI admite paradigmas de programación orientados a objetos y está basado en Java.
  2. Los parámetros pasados ​​a procedimientos remotos en RPC son las estructuras de datos ordinarias. Por el contrario, RMI transita objetos como un parámetro al método remoto.
  3. RPC se puede considerar como la versión anterior de RMI, y se usa en los lenguajes de programación que admiten la programación de procedimientos, y solo se puede usar el método de paso por valor. A diferencia de lo anterior, la facilidad de RMI está diseñada en base a un enfoque de programación moderno, que podría usar el paso por valor o referencia. Otra ventaja de RMI es que los parámetros pasados ​​por referencia se pueden cambiar.
  4. El protocolo RPC genera más gastos generales que RMI.
  5. Los parámetros pasados ​​en RPC deben ser " in-out ", lo que significa que el valor pasado al procedimiento y el valor de salida deben tener los mismos tipos de datos. En contraste, no hay obligación de pasar parámetros de " entrada-salida " en RMI.
  6. En RPC, las referencias no podrían ser probables porque los dos procesos tienen un espacio de direcciones distinto, pero es posible en el caso de RMI.

Conclusión

Tanto RPC como RMI tienen el mismo propósito, pero se usan en lenguajes que admiten diferentes paradigmas de programación, por lo tanto, tienen características distintas.

Top