Fonctionnement de RPC

Les outils RPC font apparaître les utilisateurs comme si un client appelait directement une procédure située dans un programme serveur distant. Le client et le serveur ont chacun leurs propres espaces d’adressage ; autrement dit, chacun a sa propre ressource de mémoire allouée aux données utilisées par la procédure. La figure suivante illustre l’architecture RPC.

Architecture rpc

Comme le montre l’illustration, l’application cliente appelle une procédure stub locale au lieu du code qui implémente la procédure. Les stubs sont compilés et liés à l’application cliente. Au lieu de contenir le code réel qui implémente la procédure distante, le code stub client :

  • Récupère les paramètres requis à partir de l’espace d’adressage du client.
  • Convertit les paramètres selon les besoins en un format de remise de remise standard pour la transmission sur le réseau.
  • Appelle des fonctions dans la bibliothèque d’exécution du client RPC pour envoyer la requête et ses paramètres au serveur.

Le serveur effectue les étapes suivantes pour appeler la procédure distante.

  1. Les fonctions de bibliothèque d’exécution RPC du serveur acceptent la demande et appellent la procédure stub du serveur.
  2. Le stub du serveur récupère les paramètres de la mémoire tampon réseau et les convertit du format de transmission réseau au format dont le serveur a besoin.
  3. Le stub du serveur appelle la procédure réelle sur le serveur.

La procédure distante s’exécute ensuite, générant éventuellement des paramètres de sortie et une valeur de retour. Une fois la procédure distante terminée, une séquence d’étapes similaire retourne les données au client.

  1. La procédure distante retourne ses données au stub du serveur.
  2. Le stub du serveur convertit les paramètres de sortie au format requis pour la transmission sur le réseau et les retourne aux fonctions de bibliothèque d’exécution RPC.
  3. Les fonctions de bibliothèque d’exécution RPC du serveur transmettent les données sur le réseau à l’ordinateur client.

Le client termine le processus en acceptant les données sur le réseau et en les renvoyant à la fonction appelante.

  1. La bibliothèque d’exécution RPC cliente reçoit les valeurs de retour de procédure distante et les retourne au stub client.
  2. Le stub client convertit les données de son NDR au format utilisé par l’ordinateur client. Le stub écrit des données dans la mémoire du client et retourne le résultat au programme appelant sur le client.
  3. La procédure d’appel se poursuit comme si la procédure avait été appelée sur le même ordinateur.

Les bibliothèques d’exécution sont fournies en deux parties : une bibliothèque d’importation, qui est liée à l’application et la bibliothèque d’exécution RPC, qui est implémentée en tant que bibliothèque de liaison dynamique (DLL).

L’application serveur contient des appels aux fonctions de bibliothèque d’exécution du serveur qui inscrivent l’interface du serveur et permettent au serveur d’accepter les appels de procédure distante. L’application serveur contient également les procédures distantes spécifiques à l’application appelées par les applications clientes.