RPC frente a 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 términos de lenguaje, pero solo admite tipos de datos primitivos para pasar. Por otro lado, RMI está limitado a Java pero permite pasar objetos. RPC sigue construcciones de lenguaje procesal tradicional, mientras que RMI es compatible con 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 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 realiza una llamada de procedimiento en la computadora local como de costumbre. El módulo llamado stub del cliente recopila los argumentos y 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 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 forma abstracta, mientras que el sistema operativo se encargará de los detalles de la red interna. 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. RPC generalmente es neutral en cuanto al idioma, 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.
¿Qué 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 soportar la naturaleza orientada a objetos. Esto permite llamar a métodos Java en otra máquina virtual Java que resida en la misma computadora o en una remota. La limitación de RMI es que solo se pueden invocar los métodos de Java, pero esto tiene la ventaja de que los objetos se pueden pasar como argumentos y devolver valores. Cuando se considera el rendimiento, RMI es más lento que RPC debido a la participación del código de bytes en la máquina virtual de Java, pero RMI es muy fácil de programar y es muy fácil de usar.
RMI utiliza 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 eludir los cortafuegos. Los pasos que ocurren 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 independiente del lenguaje, 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 pasar objetos como argumentos y devolver valores. Al usar 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 del código de bytes de Java.
• RMI permite el uso de patrones de diseño debido a su naturaleza orientada a objetos, mientras que RPC no tiene esta capacidad.
Resumen:
RPC frente a RMI
RPC es un mecanismo de lenguaje neutral que permite llamar a un procedimiento en una computadora remota. Sin embargo, la función de idioma 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.