RPC contre RMI
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 tandis 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 le passage d'objets. RPC suit les constructions de langage procédural traditionnelles tandis que RMI prend en charge la conception orientée objet.
Qu'est-ce que le RPC ?
RPC, qui signifie Remote Procedure Call, est un type de communication inter-processus. Cela permet d'appeler une fonction dans un autre processus exécuté sur l'ordinateur local ou sur un ordinateur distant. Ce concept est apparu il y a longtemps en 1980, mais la première implémentation célèbre a été vue sous Unix.
RPC implique 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 n'a qu'à spécifier de manière abstraite tandis que le système d'exploitation s'occupera 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 courants tels que Unix, Linux, Windows et OS X. RPC est généralement neutre vis-à-vis du langage et limite donc les types de données aux plus primitifs puisqu'ils doivent être communs à tous les langages. L'approche en RPC n'est pas orientée objet, mais c'est un mécanisme procédural traditionnel comme en C.
Qu'est-ce que RMI ?
RMI, qui signifie Remote Method Invocation, 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 invoquées, mais cela présente l'avantage que les objets peuvent être passés en tant qu'arguments et valeurs de retour. Lorsque les performances sont prises en compte, 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 il est très facile à utiliser.
RMI utilise des mécanismes de sécurité intégrés à Java et fournit également une fabrique de sockets 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 qui se produisent dans RMI sont similaires à RPC. L'implémentation de RMI s'occupe des détails du réseau interne là où le programmeur n'a pas à s'en soucier.
Quelle est la différence entre RPC et RMI ?
• RPC est indépendant du langage alors que RMI est limité à Java.
• RPC est procédural comme en C, mais RMI est orienté objet.
• RPC ne prend en charge que les types de données primitifs tandis que RMI permet de transmettre des objets en tant qu'arguments et valeurs de retour. Lors de l'utilisation de RPC, le programmeur doit diviser tous les objets composés en types de données primitifs.
• RMI est facile à programmer que RPC.
• RMI est plus lent que RPC puisque RMI 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 contre RMI
RPC est un mécanisme indépendant du langage qui permet d'appeler une procédure sur un ordinateur distant. Cependant, la fonctionnalité de langage neutre 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'objets, ce qui facilite la vie du programmeur. L'avantage de RMI est la prise en charge de la conception orientée objet, mais la limitation à Java est un inconvénient.