Respuestas:
RPC está basado en C y, como tal, tiene una semántica de programación estructurada, por 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 más referencias de objetos remotos que se pueden distribuir entre muchas instancias de JVM, por lo que es mucho más poderoso .
RMI se destaca cuando surge la necesidad de desarrollar algo más complejo que una arquitectura cliente-servidor pura. Es muy fácil distribuir objetos en una red permitiendo que todos los clientes se comuniquen sin tener que establecer conexiones individuales explícitamente.
La principal diferencia entre RPC y RMI es que RMI involucra objetos . En lugar de llamar a procedimientos de forma remota mediante el uso de una función proxy , en su lugar utilizamos un objeto proxy .
Hay una mayor transparencia con RMI, es decir, 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 avanzado que RPC, lo que permite la invocación dinámica , donde las interfaces pueden cambiar en tiempo de ejecución, y la adaptación de objetos , que proporciona una capa adicional de abstracción.
1. Enfoque:
RMI usa un paradigma orientado a objetos donde el usuario necesita conocer el objeto y el método del objeto que necesita invocar.
RPC no trata con objetos. Más bien, llama a subrutinas específicas que ya están establecidas.
2. Trabajo:
Con RPC, obtiene una llamada de procedimiento que se parece bastante a una llamada local. RPC maneja las complejidades involucradas al pasar la llamada de la computadora local a la remota.
RMI hace lo mismo, pero RMI pasa una referencia al objeto y al método al que se llama.
RMI = RPC + Orientación a objetos
3. Mejor uno:
RMI es un mejor enfoque en comparación con RPC, especialmente con programas más grandes, ya que proporciona un código más limpio que es más fácil de identificar si algo sale mal.
4. Ejemplos de sistema:
Sistemas RPC: SUN RPC, DCE RPC
Sistemas RMI: Java RMI, CORBA, Microsoft DCOM / COM +, SOAP (Protocolo simple de acceso a objetos)
La 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.
La invocación de métodos remotos (RMI) es una API que implementa RPC en Java con soporte de paradigmas orientados a objetos.
Puede pensar en invocar RPC es como llamar a un procedimiento C. RPC admite tipos de datos primitivos, mientras que RMI admite parámetros de métodos / tipos de retorno como objetos java.
RMI es fácil de programar a diferencia de RPC. Puede pensar su lógica empresarial en términos de objetos en lugar de una secuencia de tipos de datos primitivos.
RPC es un lenguaje neutral a diferencia de RMI, que se limita a Java
RMI es un poco más lento que RPC
Eche un vistazo a este artículo para la implementación de RPC en C
La invocación de método remoto o RMI es muy similar a la llamada a procedimiento remoto o RPC en que el cliente envía objetos proxy (o stubs) al servidor; sin embargo, la sutil diferencia es que RPC del lado del cliente invoca FUNCIONES a través de la función proxy y RMI invoca MÉTODOS a través de función proxy. RMI se considera ligeramente superior, ya que es una versión orientada a objetos de RPC.
A partir de aquí .
Para obtener más información y ejemplos, eche un vistazo aquí .
La diferencia entre RMI y RPC es que:
method
y a function
? En Java no hay funciones ... pero en la programación orientada a objetos en la medida de lo que puedo recordar, son sinónimos, y también lo son invocation
y call
.
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 al cliente.
Java RMI también logra lo mismo pero de manera ligeramente diferente. Utiliza referencias a objetos remotos . Entonces, lo que hace es que envía una referencia al objeto remoto junto con el nombre del método a invocar. Es mejor porque resulta más limpio el código en el caso de programas grandes y también la distribución de objetos a través de la red permite que varios clientes invoquen métodos en el servidor en lugar de establecer cada conexión individualmente.
RMI
en Java es algo así comogRPC
en .Net ...