¿Qué es RPC (llamada a procedimiento remoto)?

Publicado por

Llamada a procedimiento remoto o RPC por sus siglas en inglés (Remote Procedure Call) es una técnica que utiliza el modelo cliente-servidor para ejecutar tareas en un proceso diferente como podría ser en una computadora remota. A veces solamente se le llama como llamada a una función o subrutina remota.

¿Cómo funciona la llamada a procedimiento remoto?

  1. El cliente hace la llamada al procedimiento remoto mediante un mensaje a través de la red. Este se detiene ya que es un proceso síncrono, es decir, necesita una respuesta del servidor para poder continuar su ejecución. En esta llamada se incluye un stub (o resguardo en español) el cual se encarga de ajustar parámetros y direcciones de memoria de un ambiente (el cliente) a otro (el servidor).
  2. El servidor recibe la petición y desempaqueta el mensaje para extraer la información necesaria para realizar la tarea. El stub ayuda a que el servidor sea capaz de convertir parámetros de una representación a otra (de ser necesario), para traducir direcciones de memoria de cliente a servidor, etc.
  3. El servidor ejecuta la tarea.
  4. El servidor crea un mensaje de respuesta para el cliente en el que incluye el resultado de la tarea que este le pidió realizar.
  5. El cliente recibe y desempaqueta el mensaje de respuesta del servidor. Continua con su ejecución normal.

El stub

El stub es la pieza de código que le permite al servidor ejecutar la tarea que se le asignó. Se encarga de proveer la información necesaria para que el servidor convierta las direcciones de los parámetros que el cliente envió en direcciones de memoria válidos dentro del ambiente del servidor. La representación de datos en cliente y servidor (big-endian o little-endian) podría discrepar, el stub también provee la información necesaria para solucionar esta situación. De forma general es la pieza de código que se encarga de enmascarar toda discrepancia entre el cliente y servidor. Es necesario que las bibliotecas de stubs estén instaladas tanto en el cliente como en el servidor.

El siguiente diagrama muestra de forma resumida cómo funciona una llamada a procedimiento remoto:

Problemas con RPC

A pesar de que RPC nos ofrece muchas ventajas para brindar servicios basados en un modelo cliente-servidor, también tiene una desventaja bastante importante:

  • RPC es dependiente del lenguaje de programación que se utilice. Si quisiéramos utilizarlo para ofrecer algún servicio web, por ejemplo, es probable que necesitemos utilizar más de un lenguaje de programación del lado del cliente y del servidor, en ese momento RPC deja de ser una alternativa. Sin embargo, si todos los módulos del servicio que vamos a ofrecer a los clientes están basados en el mismo lenguaje de programación, RPC es una muy buena opción.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *