Diferencia entre RPC y RMI

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 un lenguaje neutral, pero solo admite tipos de datos primitivos que se transmiten. Por otro lado, RMI se limita a Java pero permite pasar objetos. RPC sigue las construcciones tradicionales de lenguaje de procedimiento, mientras que RMI admite un diseño orientado a objetos.

¿Qué es RPC??

RPC, que representa la llamada de 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 en 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 hace una llamada de procedimiento en la computadora local como de costumbre. El módulo llamado Client Stub recopila los argumentos y crea un mensaje y pasa al sistema operativo, el sistema operativo hace una llamada del sistema y envía este mensaje a la computadora remota. El sistema operativo en el servidor recopila el mensaje y pasa al módulo en el servidor llamado Servidor Stub. Luego, STUB del servidor llama al procedimiento en el servidor. Finalmente, los resultados se devuelven al cliente.

La ventaja de usar RPC es que es independiente de los detalles de la red. El programador solo tiene que especificar de manera abstracta, mientras que el sistema operativo se ocupará de los detalles internos de la red. Por lo tanto, 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 convencionales, como UNIX, Linux, Windows y OS X. RPC es generalmente un lenguaje neutral, por lo tanto, 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.

¿Qué es RMI??

RMI, que representa la invocación de métodos remotos, 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 los métodos Java en otra máquina virtual Java que reside en la misma computadora o una remota. La limitación de RMI es que solo se pueden invocar métodos Java, pero esto viene con la ventaja de que los objetos se pueden pasar como argumentos y valores de retorno. Cuando el rendimiento se considera que RMI es más lento que RPC debido a la participación de Bytecode en la máquina virtual Java, pero RMI es muy amigable para el programador, y es muy fácil de usarlo.

RMI utiliza mecanismos de seguridad incorporados en Java y también ofrece una fábrica de socket que permite el uso de protocolos de capa de transporte personalizado no TCP. Además, RMI proporciona métodos para evitar los firewalls. Los pasos que ocurren en RMI son similares a RPC. La implementación de RMI se ocupa de los detalles internos de la red donde el programador no tiene que preocuparse por ellos.

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

• RPC es un lenguaje neutral, mientras que RMI se limita a Java.

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

• RPC admite solo tipos de datos primitivos, mientras que RMI permite que los objetos sean aprobados como argumentos y valores de retorno. Al usar RPC, el programador debe dividir cualquier objeto compuesto a tipos de datos primitivos.

• RMI es fácil de programar ese RPC.

• RMI es más lento que RPC ya que RMI implica la ejecución de Java Bytecode.

• 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 neutral de lenguaje que permite llamar a un procedimiento en una computadora remota. Sin embargo, la característica neutral del lenguaje limita los tipos de datos que se pasan como argumentos y valores de devolución 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 asincrónico por Caps Entreprise (CC BY-SA 3.0)