martes, 18 de octubre de 2011

Introducción a RPC (Remote Procedure Call)

RPC (Llamada a Procedimiento Remoto) es una técnica consistente en el paso de mensajes de forma transparente al programador, la cuál fue realizada por Birrel y Nelson (1984), y en la que se permite que los programas invoquen procedimientos localizados en host remotos. La información se puede transportar desde el invocador al proceso invocado en los parámetros, y se puede regresar en el resultado del procedimiento. Tradicionalmente, el procedimiento invocador se conoce como cliente y el proceso invocado, como servidor.

El propósito esencial de esta técnica es hacer que una llamada a procedimiento remoto sea lo más parecida posible a una local. A continuación se muestran los pasos para llamar a un procedimiento remoto:
  1. El cliente llama al stub (pequeño procedimiento de biblioteca) del cliente. Ésta es una llamada a procedimiento local, y los parámetros se colocan en la pila de forma tradicional.
  2. El stub del cliente empaca los parámetros en un mensaje (marshalling) y realiza una llamada de sistema para enviar dicho mensaje.
  3. El kernel envía el mensaje desde la máquina cliente a la máquina servidor.
  4. El kernel pasa el paquete entrante al stub del servidor.
  5. El stub del servidor llama al procedimiento servidor con parámetros sin marshalling.
Para la respuesta, se seguirá la misma ruta en la dirección opuesta. Estos pasos se ven reflejados en la siguiente imagen:


El uso método consta de las siguientes ventajas:
  • Proporciona una interfaz simple para sistemas distribuidos heterogéneos, pudiendo ser implementado en cualquier lenguaje.
  • Apoya el diseño modular y jerárquico de los sistemas distribuidos (cliente y servidor son entidades separadas).
Por el contrario, este sistema presenta los siguientes inconvenientes:
  • El paso de apuntadores es imposible porque el cliente y el servidor están en diferentes espacios de direcciones.
  • En los lenguajes de tipo flexible, como C, el stub del cliente no puede aplicar marshalling a los parámetros de un array debido a que no tiene forma de determinar su longitud.
  • No siempre es posible deducir los tipos de parámetros, ni siquiera de una especificación formal o el código mismo. Un ejemplo es printf, que puede tener cualquier número de parámetros con diferentes tipos.
  • Se pueden usar variables globales siempre y cuando el procedimiento invocado no se mueva a una máquina remota.
Hay distintos tipos de RPC, muchos de ellos estandarizados como pueden ser el RPC de Sun denominado ONC RPC, el de OSF denominado DCE/RPC y el Modelo de Objetos de Componentes Distribuidos de Microsoft DCOM. Hoy en día se está utilizando el XML como lenguaje para definir el lenguaje de descripción de interfaz 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.

Fuentes:
  1. Tanenbaum, Andrew; Redes de computadoras; Cuarta edición, 2004, México; Pearson Prentice Hall; ISBN 970-26-0162-2.
  2. http://www.st.informatik.tu-darmstadt.de/pages/lectures/sct/ss06/assignments/SUM-V4-RPC.pdf (Último acceso: Octubre 2011).
  3. http://www.wikipedia.org/ (Último acceso: Octubre 2011)

No hay comentarios:

Publicar un comentario