Chapitre II Architecture Multi-composants réparties
1-Notion d’objets répartis
Une architecture logicielle à base d’objets répartis est constituée d’un ensemble d’objets conçus pour
travailler en collaboration.
Mais contrairement à une application objet traditionnelle, les objets résident :
• Sur différents ordinateurs connectés via un réseau.
• Dans différents processus sur la même machine.
Un objet réparti peut envoyer un message à un autre objet réparti sur une machine distante ou
processus pour exécuter une tâche bien précise et ensuite en exploiter le résultat.
• Mais la puissance des objets répartis ne réside pas dans le fait qu’ils soient éparpillés sur un réseau :
leur intérêt principal provient du fait qu’un objet distant reste accessible de la même manière qu’un objet
local du système par invocation de méthodes.
2- La présentation et l'architecture de RMI
RMI (Remote Method Invocation : Le mécanisme d'invocation de méthode à distance) est une
technologie développée et fournie par Sun à partir du JDK 1.1 pour permettre de mettre en œuvre
facilement des objets distribués.
RMI est un ensemble de classes permettant de manipuler des objets sur des machines distantes (objets
distants) de manière similaire aux objets sur la machine locale (objet locaux).
On dit généralement que RMI est une solution "tout Java", contrairement à la norme Corba de l'OMG
(Object Management Group) permettant de manipuler des objets à distance avec n'importe quel langage.
Corba est toutefois beaucoup plus compliqué à mettre en œuvre, c'est la raison pour laquelle de
nombreux développeurs se tournent généralement vers RMI.
Le but de RMI est de permettre l'appel, l'exécution et le renvoi du résultat d'une méthode exécutée dans
une machine virtuelle différente de celle de l'objet l'appelant. Cette machine virtuelle peut être sur une
machine différente pourvu qu'elle soit accessible par le réseau.
La machine sur laquelle s'exécute la méthode distante est appelée serveur.
L'appel coté client d'une telle méthode est un peu plus compliqué que l'appel d'une méthode d'un objet
local mais il reste simple. Il consiste à obtenir une référence sur l'objet distant puis à simplement appeler
la méthode à partir de cette référence.
La technologie RMI se charge de rendre transparente la localisation de l'objet distant, son appel et le
renvoi du résultat.
En fait, elle utilise deux classes particulières, le stub et le skeleton, qui doivent être générées avec l'outil
rmic fourni avec le JDK.
Le stub est une classe qui se situe côté client et le skeleton est son homologue coté serveur. Ces deux
classes se chargent d'assurer tous les mécanismes d'appel, de communication, d'exécution, de renvoi et
de réception du résultat.
Un stub est un objet coté client qui gère l’encodage et le désencodage des données lors d’un appel à un
objet distant RMI.
Le client croit invoquer l’objet distant mais il invoque en fait son stub qui implémente la même interface
et gère toute la problématique réseau. Le stub est lié à un skeleton.
Un skeleton est un objet coté serveur qui gère l’encodage et le désencodage des données lors de la
réception d’un appel à un objet RMI.