| Componente | ¿Qué es? | ¿Para qué sirve? |
|---|---|---|
| Stub (cliente) | Objeto proxy en el cliente | Representa al objeto remoto y envía la llamada al servidor |
| Skeleton (servidor) | Intermediario en el servidor (en versiones antiguas) | Recibe la llamada del stub y la dirige al objeto real |
| Capa de referencia remota (Remote Reference Layer) | Capa intermedia | Gestiona la comunicación entre JVMs y referencias a objetos remotos |
| Capa de transporte (Transport Layer) | Nivel de red | Se encarga de la comunicación física (TCP/IP) entre cliente y servidor |
| Componente | ¿Qué es? | ¿Para qué sirve? |
|---|---|---|
| Cliente (Client) | Proceso que inicia la llamada | Solicita la ejecución de un procedimiento remoto |
| Stub de cliente (Client Stub) | Proxy en el cliente | Convierte la llamada local en un mensaje (serializa parámetros) |
| Sistema RPC | Middleware | Gestiona la comunicación entre cliente y servidor |
| Stub de servidor (Server Stub) | Intermediario en el servidor | Recibe el mensaje y lo transforma en llamada local |
| Servidor (Server) | Proceso remoto | Ejecuta el procedimiento solicitado |
| Protocolo de transporte | Nivel de red (TCP/UDP) | Envía los datos entre cliente y servidor |
RMI y RPC permiten invocar operaciones en otro proceso o máquina como si fueran locales.
La diferencia principal es que:
RPC
Cliente → Client Stub → Sistema RPC → Server Stub → Servidor
RMI
Cliente → Stub → Remote Reference Layer → Transport Layer → JVM remota → Objeto remoto
Es el representante local del objeto remoto.
El cliente no habla directamente con el objeto remoto, sino con el stub.
Cliente llama a un método → Stub captura la llamada → la envía al servidor
Es un componente histórico de RMI, usado en versiones antiguas.
⚠️ En implementaciones modernas de Java RMI, el skeleton explícito dejó de ser necesario, porque esa lógica quedó integrada en la infraestructura RMI.
Capa intermedia que gestiona la referencia al objeto remoto.
No solo importa enviar mensajes: también hay que saber qué objeto remoto concreto se está invocando.
Es la capa inferior de comunicación.
Es la capa que hace posible el transporte físico de la petición remota.
Es el proceso que inicia la llamada remota.
Actúa como un proxy local.
Es el middleware que coordina toda la llamada remota.
Es el intermediario en el extremo servidor.
Es el proceso remoto que ejecuta el procedimiento solicitado.
Es la base de comunicación de red.
1. El cliente invoca una función.
2. El client stub serializa parámetros.
3. El sistema RPC envía el mensaje.
4. El server stub recibe y reconstruye la llamada.
5. El servidor ejecuta el procedimiento.
6. La respuesta vuelve en sentido inverso.
1. El cliente invoca un método sobre el stub.
2. El stub empaqueta la llamada remota.
3. La Remote Reference Layer identifica el objeto remoto.
4. La Transport Layer transmite la petición.
5. El servidor ejecuta el método en el objeto remoto.
6. El resultado retorna al cliente.
| Aspecto | RMI | RPC |
|---|---|---|
| Modelo | Orientado a objetos | Orientado a procedimientos/funciones |
| Entorno típico | Java | Sistemas distribuidos en general |
| Elemento principal | Objeto remoto | Procedimiento remoto |
| Intermediario cliente | Stub | Client Stub |
| Intermediario servidor | Skeleton (antiguo) / infraestructura RMI | Server Stub |
| Capa lógica adicional | Remote Reference Layer | Sistema RPC |
| Transporte | Transport Layer | Protocolo de transporte |
| Abstracción | Invocación de métodos | Llamada a funciones |
Se basa en la idea de:
"Llamar a una función remota como si fuera local"
Amplía esa idea hacia objetos:
"Invocar métodos de un objeto remoto como si el objeto estuviera en local"
👉 Por tanto, RMI puede entenderse como una especialización orientada a objetos del paradigma de llamada remota.
RMI
├─ Stub
├─ Skeleton (antiguo)
├─ Remote Reference Layer
└─ Transport Layer
RPC
├─ Cliente
├─ Client Stub
├─ Sistema RPC
├─ Server Stub
├─ Servidor
└─ Protocolo de transporte