La différence fondamentale entre RPC et RMI est que RPC est un mécanisme qui permet d'appeler une procédure sur un ordinateur distant alors que RMI est l'implémentation de RPC en java. RPC est indépendant du langage mais ne prend en charge que les types de données primitifs à transmettre. D'autre part, RMI est limité à Java mais permet de transmettre des objets. RPC suit les constructions de langage procédural traditionnelles tandis que RMI prend en charge la conception orientée objet.
RPC, qui signifie Remote Procedure Call, est un type de communication interprocessus. Cela permet d'appeler une fonction dans un autre processus en cours d'exécution sur l'ordinateur local ou un ordinateur distant. Ce concept est apparu il y a longtemps en 1980, mais la première mise en oeuvre célèbre a été vue dans Unix.
Le RPC comporte plusieurs étapes. Le client effectue un appel de procédure sur l'ordinateur local comme d'habitude. Le module appelé stub client collecte les arguments, crée un message et le transmet au système d'exploitation. Le système d'exploitation effectue un appel système et envoie ce message à l'ordinateur distant. Le système d’exploitation du serveur collecte le message et le transmet au module sur le serveur appelé stub de serveur. Ensuite, le stub du serveur appelle la procédure sur le serveur. Enfin, les résultats sont renvoyés au client..
L'avantage d'utiliser RPC est qu'il est indépendant des détails du réseau. Le programmeur doit simplement spécifier de manière abstraite pendant que le système d’exploitation s’occupe des détails du réseau interne. Cela facilite donc la programmation et permet au RPC de fonctionner sur n’importe quel réseau malgré les différences physiques et de protocole. Les implémentations RPC sont présentes dans tous les systèmes d'exploitation classiques tels que Unix, Linux, Windows et OS X. RPC est généralement neutre en termes de langue, ce qui limite les types de données aux plus primitifs, car ils doivent être communs à toutes les langues. L’approche dans RPC n’est pas orientée objet, mais c’est un mécanisme procédural traditionnel, comme dans C.
RMI, qui signifie Remote Method Invocation (Invocation de méthode à distance), est une API (Application Programming Interface) qui implémente RPC en Java pour prendre en charge la nature orientée objet. Cela permet d'appeler des méthodes Java sur une autre machine virtuelle Java résidant sur le même ordinateur ou sur un ordinateur distant. La limitation de RMI est que seules les méthodes Java peuvent être appelées, mais cela présente l'avantage que les objets peuvent être transmis en tant qu'arguments et que des valeurs de retour. Lorsque les performances sont considérées comme plus performantes, RMI est plus lent que RPC en raison de l'implication du bytecode sur la machine virtuelle Java, mais RMI est très convivial pour les programmeurs et très facile à utiliser..
RMI utilise des mécanismes de sécurité intégrés à Java et fournit également une fabrique de socket qui permet l'utilisation de protocoles de couche de transport personnalisés non TCP. De plus, RMI fournit des méthodes pour contourner les pare-feu. Les étapes effectuées dans RMI sont similaires à RPC. L'implémentation de RMI traite les détails du réseau interne où le programmeur n'a pas à s'en soucier..
• RPC ne dépend pas du langage, tandis que RMI est limité à Java..
• RPC est procédural comme en C, mais RMI est orienté objet..
• RPC prend en charge uniquement les types de données primitifs, tandis que RMI permet aux objets d'être transmis en tant qu'arguments et de renvoyer des valeurs. Lors de l'utilisation de RPC, le programmeur doit fractionner tous les objets composés en types de données primitifs..
• RMI est facile à programmer ce RPC.
• RMI est plus lent que RPC, car il implique l'exécution de bytecode java..
• RMI permet l'utilisation de modèles de conception en raison de la nature orientée objet alors que RPC n'a pas cette capacité..
Résumé:
RPC est un mécanisme indépendant du langage qui permet d'appeler une procédure sur un ordinateur distant. Cependant, la fonctionnalité indépendante du langage limite les types de données transmis en tant qu'arguments et renvoie des valeurs aux types primitifs. RMI est l'implémentation de RPC en Java et prend également en charge le passage d'objet, facilitant ainsi la vie du programmeur. L'avantage de RMI est le support de conception orienté objet, mais la limitation à Java est un inconvénient..
Images de courtoisie: