Recommandé, 2024

Choix De L'Éditeur

Différence entre RPC et RMI

RPC et RMI sont les mécanismes qui permettent à un client d'appeler la procédure ou la méthode depuis le serveur en établissant une communication entre client et serveur. La différence commune entre RPC et RMI est que RPC ne prend en charge que la programmation procédurale, tandis que RMI prend en charge la programmation orientée objet .

Une autre différence majeure entre les deux réside dans le fait que les paramètres transmis à l'appel de procédures distantes consistent en des structures de données ordinaires . D'autre part, les paramètres transmis à la méthode distante sont constitués d' objets .

Tableau de comparaison

Base de comparaisonRPCRMI
Les soutiensProgrammation procédurale
Programmation orientée objet
ParamètresLes structures de données ordinaires sont transmises aux procédures distantes.Les objets sont transmis aux méthodes distantes.
EfficacitéInférieur au RMIPlus que RPC et soutenu par une approche de programmation moderne (ie paradigmes orientés objet)
Frais générauxPlus
Moins comparativement
Les paramètres d'entrée-sortie sont obligatoires.OuiPas nécessairement
Fournir une facilité de programmation
Haute
faible

Définition de RPC

L'appel de procédure distante (RPC) est une fonctionnalité de langage de programmation conçue pour l'informatique distribuée et basée sur la sémantique des appels de procédure locaux . Il s’agit des formes les plus courantes de service à distance. Il a été conçu pour permettre d’abstraire le mécanisme d’appel de procédure à utiliser entre des systèmes connectés via un réseau. Il est similaire au mécanisme IPC dans lequel le système d'exploitation permet aux processus de gérer des données partagées et de traiter avec un environnement dans lequel différents processus s'exécutent sur des systèmes distincts et nécessitent nécessairement une communication basée sur des messages.

Comprenons comment RPC est implémenté à travers les étapes suivantes:

  • Le processus client appelle le module de remplacement du client avec des paramètres et son exécution est suspendue jusqu'à la fin de l'appel.
  • Les paramètres sont ensuite traduits dans une forme indépendante de la machine en effectuant une séquence via le stub client. Ensuite, le message est préparé qui contient la représentation des paramètres.
  • Pour rechercher l’identité du site, le stub client communique avec le serveur de noms sur lequel existe une procédure distante.
  • À l'aide du protocole de blocage, le stub client envoie le message au site sur lequel un appel de procédure à distance existe. Cette étape arrête le stub client jusqu'à ce qu'il obtienne une réponse.
  • Le site du serveur reçoit le message envoyé du côté client et le convertit au format spécifique à la machine.
  • Le module de remplacement du serveur exécute maintenant un appel sur la procédure de serveur avec les paramètres. Le module de remplacement du serveur est interrompu jusqu'à la fin de la procédure.
  • La procédure serveur renvoie les résultats générés au stub du serveur. Les résultats sont convertis au format indépendant de la machine sur le stub du serveur et créent un message contenant les résultats.
  • Le message de résultat est envoyé au stub client qui est reconverti au format spécifique à la machine et adapté au stub client.
  • Au dernier client, le stub renvoie les résultats au processus client.

Définition de RMI

Le RMI (Remote Method Invocation) est similaire au RPC mais est spécifique au langage et est une fonctionnalité de Java. Un thread est autorisé à appeler la méthode sur un objet distant. Pour conserver la transparence côté client et serveur, il implémente un objet distant à l'aide de stubs et de squelettes. Le stub réside avec le client et, pour l'objet distant, il se comporte comme un proxy.

Lorsqu'un client appelle une méthode distante, le stub correspondant à la méthode distante est appelé. Le stub client est responsable de la création et de l'envoi du colis contenant le nom d'une méthode et des paramètres mis en ordre, et le squelette est responsable de la réception du colis.

Le squelette unmarshals paramètres et appelle la méthode souhaitée sur le serveur. Le squelette rassemble la valeur donnée (ou les exceptions) avec le colis et l'envoie au stub client. Le stub réassemble le colis de retour et l'envoie au client.

En Java, les paramètres sont transmis aux méthodes et renvoyés sous forme de référence. Cela pourrait être gênant pour le service RMI car tous les objets ne sont peut-être pas des méthodes distantes. Donc, il doit déterminer ce qui pourrait être passé comme référence et ce qui ne pourrait pas.

Java utilise un processus nommé sérialisation dans lequel les objets sont transmis en tant que valeur. L'objet distant est localisé par passe par valeur. Il peut également transmettre un objet par référence en passant une référence distante à l'objet avec l'URL de la classe de stub. Passer par référence restreint un stub pour l'objet distant.

Différences clés entre RPC et RMI

  1. RPC prend en charge les paradigmes de programmation procédurale et est donc basé sur C, tandis que RMI prend en charge les paradigmes de programmation orientée objet et est basé sur Java.
  2. Les paramètres transmis aux procédures distantes dans RPC sont les structures de données ordinaires. Au contraire, RMI transite des objets en tant que paramètre de la méthode distante.
  3. RPC peut être considéré comme l'ancienne version de RMI. Il est utilisé dans les langages de programmation prenant en charge la programmation procédurale. Il ne peut utiliser que la méthode pass par valeur. Par contre, la fonctionnalité RMI est conçue sur la base d’une approche de programmation moderne, qui pourrait utiliser la méthode de passage par valeur ou par référence. Un autre avantage de RMI est que les paramètres passés par référence peuvent être modifiés.
  4. Le protocole RPC génère plus de temps système que RMI.
  5. Les paramètres transmis dans RPC doivent être " in-out ", ce qui signifie que la valeur transmise à la procédure et la valeur de sortie doivent avoir les mêmes types de données. En revanche, il n’existe aucune contrainte de passage de paramètres « in-out » dans RMI.
  6. Dans RPC, les références n'étaient pas probables car les deux processus ont un espace d'adressage distinct, mais cela est possible dans le cas de RMI.

Conclusion

RPC et RMI remplissent le même objectif, mais sont utilisés dans des langages qui prennent en charge différents paradigmes de programmation. Ils ont donc des fonctionnalités distinctes.

Top