Creo que RMIen Java es algo así como gRPCen .Net ...
Yousha Aleayoub
Respuestas:
137
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.
Esto es incorrecto. RPC también está basado en Java. JAX-RPC 1.1 fue reemplazado por 2.0, que luego pasó a llamarse JAX-WS. En Java, cuando habla de RPC, está hablando de SOAP y servicios web. Aquí hay un artículo de IBM sobre JAX-RPC 1.1 cambiando a JAX-WS. ibm.com/developerworks/library/ws-tip-jaxwsrpc
MattC
1
@MattC Creo que el artículo al que se vinculó señaló que la razón de este cambio de nombre de "JAX-RPC" a "JAX-WS" es exactamente que el nombre original no era exacto, ya que esta especificación involucraba más que solo "RPC" en un sentido tradicional Entonces, esta respuesta, que habla sobre lo que RPC tradicionalmente significa, sigue siendo correcta.
xji
2
sí, lo que quise decir es que RPC se originó en el mundo C / Unix (al menos la implementación de RPC más común, ONCRPC) y, como tal, se basa en ese modelo de cálculo; por supuesto, nada impide implementarlo sobre cualquier otro lenguaje de programación
fortran
66
Una pequeña diferencia de opinión sobre la forma en que se usa la semántica no hace que una respuesta sea incorrecta (o engañosa). Cualquiera que lea esto puede comprender fácilmente que "basado en C" básicamente significa "orientado al procedimiento". Cualquiera que haya aprendido Java conoce la diferencia entre POP y OOP.
Navin Israni
¿Puede un cliente nodejs (digamos) invocar llamadas RMI en el servidor? ¿Hay tal manera?
Hitesh Bajaj
45
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.
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)
En mi aplicación, estoy usando JAX-WS para exponer / consumir servicios de jabón. ¿Puedo llamarlo mecanismo de tipo RPC? Según tengo entendido, en JAX-WS, estamos invocando un método remoto utilizando la API de reflexión de Java. Por lo tanto, coincide con la definición de RPC. Por favor confirmar !
Gunjan Shah
11
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.
método es lo que se llama funciones en java, función es lo que se llama método en c / c ++. Entonces, ¿cuál es la diferencia?
starcorn
1
Una diferencia es que (en el caso de los métodos de instancia), hay un objeto de invocación. El objeto que invoca debe enviarse (junto con su código) o debe vivir en el servidor de eliminación, pero debe tener una forma de ser referenciado en el servidor local.
Ellen Spertus
Ignorando cómo los lenguajes de programación específicos tratan los métodos frente a las funciones, el significado literario es que las funciones devuelven un valor mientras que los métodos modifican el estado.
Dan
RPC invoca FUNCIONES a través de la función proxy y RMI invoca MÉTODOS usando el OBJETO proxy. ¿Correcto?
Noor Nawaz el
El cliente normalmente no 'envía objetos proxy (o stubs) al servidor'. Cita de mala calidad.
Marqués de Lorne
6
La única diferencia real entre RPC y RMI es que hay objetos involucrados en RMI: en lugar de invocar funciones a través de una función proxy, invocamos métodos a través de un proxy.
¿Cuáles son las diferencias que enfatiza implícitamente, pero no aclara, entre a methody 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 invocationy call.
minutos
RPC invoca un procedimiento / función: plano.
foo
3
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.
¿Qué protocolo es "RPC", específicamente? Que yo sepa, hay dos docenas de protocolos para RPC, y la mitad de los disponibles para Java.
foo
@foo Sin duda se está refiriendo a Sun-RPC, pero todos los RPC significan Llamada a procedimiento remoto, nO objetos o métodos, por lo que no es realmente relevante.
RMI
en Java es algo así comogRPC
en .Net ...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.
fuente
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.
fuente
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)
fuente
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
fuente
A partir de aquí .
Para obtener más información y ejemplos, eche un vistazo aquí .
fuente
La única diferencia real entre RPC y RMI es que hay objetos involucrados en RMI: en lugar de invocar funciones a través de una función proxy, invocamos métodos a través de un proxy.
fuente
La diferencia entre RMI y RPC es que:
fuente
method
y afunction
? 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 soninvocation
ycall
.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.
fuente