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:
- 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.
- El stub del cliente empaca los parámetros en un mensaje (marshalling) y realiza una llamada de sistema para enviar dicho mensaje.
- El kernel envía el mensaje desde la máquina cliente a la máquina servidor.
- El kernel pasa el paquete entrante al stub del servidor.
- 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.
- Tanenbaum, Andrew; Redes de computadoras; Cuarta edición, 2004, México; Pearson Prentice Hall; ISBN 970-26-0162-2.
- http://www.st.informatik.tu-darmstadt.de/pages/lectures/sct/ss06/assignments/SUM-V4-RPC.pdf (Último acceso: Octubre 2011).
- http://www.wikipedia.org/ (Último acceso: Octubre 2011)
