Différence entre RPC et RMI

Différence entre RPC et RMI

RPC vs 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 neutre du langage mais ne prend en charge que les types de données primitifs à passer. D'un autre côté, RMI est limité à Java mais permet de passer des 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 RPC?

RPC, qui signifie une procédure à distance, est un type de communication interprète. Cela permet d'appeler une fonction dans un autre processus fonctionnant sur l'ordinateur local ou un ordinateur distant. Ce concept a émergé il y a longtemps en 1980, mais la première mise en œuvre célèbre a été vue à Unix.

RPC implique plusieurs étapes. Le client fait un appel à procédure sur l'ordinateur local comme d'habitude. Le module appelé client Stub Collectez les arguments et créez un message et transmet au système d'exploitation, le système d'exploitation fait un appel système et envoie ce message à l'ordinateur distant. Le système d'exploitation dans le serveur collecte le message et passe au module du serveur appelé serveur. Puis le serveur Stub appelle la procédure sur le serveur. Enfin, les résultats sont renvoyés au client.

L'avantage de l'utilisation du RPC est qu'il est indépendant sur les détails du réseau. Le programmeur doit simplement 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 protocoles. Les implémentations RPC sont présentes dans tous les systèmes d'exploitation traditionnels tels que Unix, Linux, Windows et OS X. Le RPC est généralement neutre du langage, il limite donc les types de données aux plus primitifs car ils doivent être communs à toutes les langues. L'approche en RPC n'est pas orientée objet, mais c'est un mécanisme de procédure traditionnel comme en C.

Qu'est-ce que RMI?

RMI, qui signifie Invocation de la méthode distante, est une API (interface de programmation d'application) 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 à distance. La limitation de RMI est que seules les méthodes Java peuvent être invoquées, mais cela s'accompagne de l'avantage que les objets peuvent être passés comme des arguments et des valeurs de retour. Lorsque la performance est considérée comme RMI est plus lente que le RPC en raison de l'implication de ByteCode sur la machine virtuelle Java, mais RMI est très adapté aux programmeurs, et il est très facile à utiliser.

RMI utilise des mécanismes de sécurité intégrés en Java et donne également une usine 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 qui se produisent dans RMI sont similaires au RPC. L'implémentation de RMI s'occupe des détails du réseau interne où le programmeur n'a pas à s'en soucier.

Quelle est la différence entre RPC et RMI?

• RPC est neutre en langue tandis 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 passer les objets en tant qu'arguments et valeurs de retour. Lorsque vous utilisez RPC, le programmeur doit diviser tous les objets composés en types de données primitives.

• RMI est facile à programmer ce RPC.

• RMI est plus lent que RPC car RMI implique l'exécution de Java Bytecode.

• RMI permet l'utilisation de modèles de conception en raison de la nature orientée vers l'objet tandis que RPC n'a pas cette capacité.

Résumé:

RPC vs RMI

RPC est un mécanisme neutre en langue qui permet d'appeler une procédure sur un ordinateur distant. Cependant, la fonctionnalité neutre de la langue limite les types de données qui sont passés sous forme d'arguments et de valeurs de retour aux types primitifs. RMI est la mise en œuvre du RPC en Java et il prend également en charge le passage des objets, ce qui facilite la vie du programmeur. L'avantage de RMI est le support de conception axé sur l'objet, mais la limitation à Java est un inconvénient.

Images gracieuseté:

  1. RPC synchrone contre asynchrone par Caps Entreprise (CC BY-SA 3.0)