Programación con RPC (Remote Procedure Calls)

RPC (Remote Procedure Calls), o también conocido en español como Llamadas a Procedimiento Remoto es una tecnología de intercomunicación de procesos, que se diferencia de algunos otros como memoria compartida, manejo de hilos (threads) o sistemas multi-proceso (fork), ya que ejecuta código de una maquina remota y obtiene el resultado de esta y esta capacitado para funcionar sobre red, es decir, sirve para intercambiar información entre procesos de una misma o diferentes maquinas con procedimientos definidos para llevar a cabo una tarea en particular, como intercambio de archivos (NFS) o monitoreo de servidores.

RPC Diagram

Actualmente existen varias implementaciones o modelos de RPC los cuales cumplen con ciertas tareas o funciones especificas, las mas conocidas son:

  • ONC/RPC: Uno de los primeros protocolos RPC, creado por Sun Microsystems para sistemas basados en UNIX.
  • DCE/RPC: Protocolo RPC de Open Software Foundation.
  • RMI: Sistema de invocación de procedimientos para Java.
  • XML-RPC: Llamadas a procedimiento remoto usando XML vía HTTP.
  • JSON/HTTP: Llamadas a procedimientos por lenguaje de marcas JSON vía HTTP.
  • DCOM: Modelo de Objetos de Componentes Distribuidos de Microsoft.

Aparte de otras variantes privativas o de uso menor.

En este caso utilizaremos la implementación de Sun: ONC/RPC. Es uno de los mas usados en entornos basados en UNIX, a causa de su diseño simple pero potente, ya que el crear un servidor RPC es sencillo sin tomar en cuenta a la complejidad del trabajo que realizara. Aunque a causa de su simpleza de trabajo, no puede ser utilizados fácilmente en redes WAN o sistemas heterogéneos. Pero ello no lo hace malo para aprender los fundamentos de la ejecución de código remoto.

Antes de empezar el tutorial se tienen que descargar los programas y librerías necesarias para la compilación de los ejemplos. Se recomienda que sea sobre un sistema GNU/Linux o Mac OS X, si necesita usar Windows instalar el entorno Cygwin. Los requerimientos son:

  • Compilador de C, preferentemente GCC.
  • Generador de código RPC: rpcgen, Se incluye por defecto en los entornos de desarrollo UNIX. En Cygwin se instala como onc-rpc-devel.
  • Las librerías de desarrollo libtirpc (solo es necesario si el sistema no lo incluye por defecto como Cygwin).
  • Preferentemente dos maquinas para ejecutar el programa cliente y el servidor aparte.

En la siguiente parte se mostrara el archivo de interfaz de RPC para empezar a implementar un servicio de prueba: Obtener información del proceso servidor.

Anuncios