Diferencia entre RPC y RMI

RPC vs RMI
 

La diferencia básica entre RPC y RMI es que RPC es un mecanismo que permite llamar a un procedimiento en una computadora remota, mientras que RMI es la implementación de RPC en java. RPC es neutral en cuanto al lenguaje, pero solo admite los tipos de datos primitivos que se van a pasar. Por otro lado, RMI está limitado a Java pero permite pasar objetos. RPC sigue las construcciones de lenguaje de procedimientos tradicionales, mientras que RMI admite el diseño orientado a objetos.

¿Qué es RPC??

RPC, que significa llamada a procedimiento remoto, es un tipo de comunicación entre procesos. Esto permite llamar a una función en otro proceso que se ejecuta en la computadora local o una computadora remota. Este concepto surgió hace mucho tiempo en 1980, pero la primera implementación famosa se vio en Unix..

RPC implica varios pasos. El cliente realiza una llamada de procedimiento en el equipo local como de costumbre. El módulo llamado recibo de cliente recopila los argumentos, crea un mensaje y lo pasa al sistema operativo. El sistema operativo realiza una llamada al sistema y envía este mensaje a la computadora remota. El sistema operativo en el servidor recopila el mensaje y lo pasa al módulo en el servidor llamado código auxiliar del servidor. Luego el apéndice del servidor llama al procedimiento en el servidor. Finalmente, los resultados son enviados de vuelta al cliente..

La ventaja de utilizar RPC es que es independiente de los detalles de la red. El programador solo tiene que especificar de forma abstracta, mientras que el sistema operativo se ocupará de los detalles de la red interna. Así que esto facilita la programación y permite que RPC funcione en cualquier red a pesar de las diferencias físicas y de protocolo. Las implementaciones de RPC están presentes en todos los sistemas operativos principales, como Unix, Linux, Windows y OS X. En general, RPC es neutral en cuanto a idiomas, por lo que limita los tipos de datos a los más primitivos, ya que deben ser comunes a todos los idiomas. El enfoque en RPC no está orientado a objetos, pero es un mecanismo de procedimiento tradicional como en C.

Que es RMI?

RMI, que significa Invocación de método remoto, es una API (Interfaz de programación de aplicaciones) que implementa RPC en java para admitir la naturaleza orientada a objetos. Esto permite llamar a métodos Java en otra máquina virtual Java que reside en la misma computadora o en una remota. La limitación de RMI es que solo se pueden invocar métodos Java, pero esto tiene la ventaja de que los objetos pueden pasarse como argumentos y valores de retorno. Cuando se considera que el rendimiento, RMI es más lento que RPC debido a la participación de bytecode en la máquina virtual de Java, pero RMI es muy amigable para los programadores y es muy fácil de usar.

RMI usa mecanismos de seguridad incorporados en Java y también proporciona una fábrica de sockets que permite el uso de protocolos de capa de transporte personalizados que no son TCP. Además, RMI proporciona métodos para evitar los cortafuegos. Los pasos que se producen en RMI son similares a RPC. La implementación de RMI cuida los detalles de la red interna donde el programador no tiene que preocuparse por ellos.

¿Cuál es la diferencia entre RPC y RMI??

• RPC es neutral en cuanto al idioma, mientras que RMI se limita a Java.

• RPC es procedimental como en C, pero RMI está orientado a objetos.

• RPC solo admite tipos de datos primitivos, mientras que RMI permite que los objetos se pasen como argumentos y devuelvan valores. Cuando se usa RPC, el programador debe dividir cualquier objeto compuesto en tipos de datos primitivos.

• RMI es fácil de programar que RPC.

• RMI es más lento que RPC ya que RMI implica la ejecución de un código de bytes java.

• RMI permite el uso de patrones de diseño debido a la naturaleza orientada a objetos, mientras que RPC no tiene esta capacidad.

Resumen:

RPC vs RMI

RPC es un mecanismo de lenguaje neutral que permite llamar a un procedimiento en una computadora remota. Sin embargo, la característica de lenguaje neutral limita los tipos de datos que se pasan como argumentos y devuelven valores a tipos primitivos. RMI es la implementación de RPC en Java y también admite el paso de objetos, lo que facilita la vida del programador. La ventaja de RMI es el soporte de diseño orientado a objetos, pero la limitación a Java es una desventaja.

Imágenes cortesía:

  1. RPC síncrono versus asíncrono por CAPS entreprise (CC BY-SA 3.0)