Remote Procedure Call

De Wikipedia, la enciclopedia libre
Saltar a: navegación, búsqueda

La Llamada a Procedimiento Remoto (RPC) (del inglés, Remote Procedure Call) es un protocolo que permite a un programa de ordenador ejecutar código en otra máquina remota sin tener que preocuparse por las comunicaciones entre ambos. El protocolo es un gran avance sobre los sockets usados hasta el momento. De esta manera el programador no tenía que estar pendiente de las comunicaciones, estando éstas encapsuladas dentro de las RPC.

Las RPC son muy utilizadas dentro de la comunicación cliente-servidor. Siendo el cliente el que inicia el proceso solicitando al servidor que ejecute cierto procedimiento o función y enviando éste de vuelta el resultado de dicha operación al cliente.

Hay distintos tipos de RPC, muchos de ellos estandarizados como pueden ser el RPC de Sun denominado ONC RPC (RFC 1057), el RPC de OSF denominado DCE/RPC y el Modelo de Objetos de Componentes Distribuidos de Microsoft DCOM, aunque ninguno de estos es compatible entre sí. La mayoría de ellos utilizan un lenguaje de descripción de interfaz (IDL) que define los métodos exportados por el servidor.

Hoy en día se está utilizando el XML como lenguaje para definir el IDL y el HTTP como protocolo de red, dando lugar a lo que se conoce como servicios web. Ejemplos de éstos pueden ser SOAP o XML-RPC.

Tipos de semántica[editar]

Semántica tal-vez[editar]

  • Procedimiento remoto puede ejecutarse una vez o ninguna vez.
  • El cliente puede recibir una respuesta o ninguna.

Funcionamiento[editar]

  1. El cliente envía una petición y se queda a la espera un tiempo determinado.
  2. Si no llega la respuesta dentro del tiempo de espera, continúa su ejecución.
  3. El cliente no tiene realimentación en caso de fallo (no sabe que pasó).

Sólo admisible en aplicaciones donde se tolere la pérdida de peticiones y la recepción de respuestas con retraso (fuera de orden).

Semántica al-menos-una-vez[editar]

  • Procedimiento remoto se ejecuta una o más veces.
  • El cliente puede recibir una o más respuestas.

Funcionamiento[editar]

  1. El cliente envía una petición y queda a la espera un tiempo.
  2. Si no llega respuesta o ACK dentro del tiempo de espera, repite la petición.
  3. El servidor no filtra peticiones duplicadas (el procedimiento remoto puede ejecutarse repetidas veces).
  4. El cliente puede recibir varias respuestas.

Sólo es aplicable cuando se usan exclusivamente operaciones idempotentes (repetibles). Nota: Una operación es idempotente si se puede ejecutar varias veces resultando el mismo efecto que si se hubiera ejecutado sólo una. En ocasiones una operación no idempotente puede implementarse como una secuencia de operaciones idempotentes. Admisible en aplicaciones donde se tolere que se puedan repetir invocaciones sin afectar a su funcionamiento.

Semántica como-máximo-una-vez[editar]

  • El procedimiento remoto se ejecuta exactamente una vez o no llega a ejecutarse ninguna.
  • El cliente recibe una respuesta o una indicación de que no se ha ejecutado el procedimento remoto.

Funcionamiento[editar]

  1. El cliente envía la petición y queda a la espera un tiempo.
  2. Si no llega respuesta o ACK dentro del tiempo de espera, repite la petición.
  3. El servidor filtra las peticiones duplicadas y guarda historial con las respuestas enviadas (servidor con memoria). El procedimiento remoto sólo se ejecuta una vez.
  4. El cliente sólo recibe una respuesta si la petición llegó y se ejecutó el procedimiento,si no recibe informe del error.

Resumen[editar]

Resumen semánticas RPC

Véase también[editar]

Enlaces externos[editar]