Funcionamiento de RPC
Las herramientas rpc hacen que parezca que los usuarios son como si un cliente llamara directamente a un procedimiento ubicado en un programa de servidor remoto. Cada cliente y servidor tienen sus propios espacios de direcciones; es decir, cada uno tiene su propio recurso de memoria asignado a los datos usados por el procedimiento. En la ilustración siguiente se muestra la arquitectura RPC.
Como se muestra en la ilustración, la aplicación cliente llama a un procedimiento de código auxiliar local en lugar del código real que implementa el procedimiento. Los códigos auxiliares se compilan y vinculan con la aplicación cliente. En lugar de contener el código real que implementa el procedimiento remoto, el código auxiliar del cliente:
- Recupera los parámetros necesarios del espacio de direcciones del cliente.
- Convierte los parámetros según sea necesario en un formato NDR estándar para la transmisión a través de la red.
- Llama a las funciones de la biblioteca en tiempo de ejecución del cliente RPC para enviar la solicitud y sus parámetros al servidor.
El servidor realiza los pasos siguientes para llamar al procedimiento remoto.
- Las funciones de biblioteca en tiempo de ejecución RPC del servidor aceptan la solicitud y llaman al procedimiento de código auxiliar del servidor.
- El código auxiliar del servidor recupera los parámetros del búfer de red y los convierte del formato de transmisión de red al formato que necesita el servidor.
- El código auxiliar del servidor llama al procedimiento real en el servidor.
A continuación, se ejecuta el procedimiento remoto, lo que posiblemente genera parámetros de salida y un valor devuelto. Una vez completado el procedimiento remoto, una secuencia similar de pasos devuelve los datos al cliente.
- El procedimiento remoto devuelve sus datos al código auxiliar del servidor.
- El código auxiliar del servidor convierte los parámetros de salida al formato necesario para la transmisión a través de la red y los devuelve a las funciones de biblioteca en tiempo de ejecución RPC.
- Las funciones de biblioteca en tiempo de ejecución RPC del servidor transmiten los datos de la red al equipo cliente.
El cliente completa el proceso aceptando los datos a través de la red y devolviéndolos a la función de llamada.
- La biblioteca en tiempo de ejecución rpc del cliente recibe los valores devueltos del procedimiento remoto y los devuelve al código auxiliar del cliente.
- El código auxiliar del cliente convierte los datos de su NDR al formato utilizado por el equipo cliente. El código auxiliar escribe datos en la memoria del cliente y devuelve el resultado al programa de llamada en el cliente.
- El procedimiento de llamada continúa como si se hubiera llamado al procedimiento en el mismo equipo.
Las bibliotecas en tiempo de ejecución se proporcionan en dos partes: una biblioteca de importación, que está vinculada con la aplicación y la biblioteca en tiempo de ejecución rpc, que se implementa como una biblioteca de vínculos dinámicos (DLL).
La aplicación de servidor contiene llamadas a las funciones de biblioteca en tiempo de ejecución del servidor que registran la interfaz del servidor y permiten que el servidor acepte llamadas a procedimientos remotos. La aplicación de servidor también contiene los procedimientos remotos específicos de la aplicación a los que llaman las aplicaciones cliente.