Présentation de l'architecture RMI

Dans l'architecture d'application distribuée, il est toujours nécessaire de communiquer entre deux applications différentes. Dans les applications Java, une application communique avec une autre application distante / différente exécutée ailleurs en utilisant un mécanisme appelé architecture RMI.

RMI signifie Remote Method Invocation. Il s'agit d'une API fournie par java qui permet à un objet résidant dans une JVM (Java Virtual Machine) d'accéder ou d'invoquer un objet s'exécutant sur une autre JVM. L'autre JVM peut être sur la même machine ou machine distante. C'est une fonctionnalité intéressante car dans les applications en temps réel, il devient très facile pour les applications Java de communiquer directement entre elles sans aucun mécanisme de communication externe. En outre, il existe toujours un besoin de communication sécurisée entre les applications basée sur une architecture d'application distribuée.

Conception RMI

Avant d'entrer dans l'architecture détaillée, nous comprendrons la conception de base de l'architecture RMI.

  • L'API RMI est fournie dans le package java.rmi. Introduisons deux termes pour la compréhension de l'architecture de conception RMI. Le premier est le client; la JVM qui appellera l'objet distant et le second est le serveur; la machine virtuelle Java qui contient l'objet distant. Ainsi, le client appellera le serveur, dans ce cas sur l'objet pour l'appel de méthode.
  • Le serveur renverra alors la référence de l'objet au client. Le hic ici est à la fois les objets c'est-à-dire local et distant apparaîtra comme un objet local sur le serveur. Il n'y aura pas de différenciation entre les deux. La syntaxe des méthodes des deux objets est également la même. Par conséquent, la JVM du serveur agit comme une JVM normale sans connaître aucun objet, qu'il soit local ou distant.
  • Le même objet peut être à la fois un serveur et un client. La référence aux objets distants est obtenue et utilisée comme s'il s'agissait d'un objet local. L'infrastructure RMI est chargée de trouver l'objet distant, d'intercepter l'appel de méthode et de traiter la demande distante à distance. Le client n'appelle des méthodes sur l'objet qu'après avoir obtenu une référence à un objet distant.

Architecture RMI

Voici le schéma de l'architecture RMI de manière simple. Sur Internet, vous trouverez différentes formes de la même architecture, mais nous en avons une simple qui vous aidera à mieux l'expliquer.

Commençons par connecter les points du point de vue de la conception avec un diagramme d'architecture.

L'application cliente et l'application serveur sont les JVM respectives de la machine cliente et de la machine serveur. Dans l'application RMI, nous écrivons respectivement deux programmes; le programme client qui réside sur le programme client et serveur qui réside sur la machine serveur.

Couche d'application:

Cette couche correspond aux systèmes réels, c'est-à-dire le client et le serveur impliqués dans la communication. Le programme java côté client communique avec le programme java côté serveur.

Talon:

De l'introduction de conception, nous avons des objets clients; Dans l'architecture RMI, il est connu sous le nom de Stub. Il s'agit d'un objet qui réside sur la machine cliente et il agit en tant que proxy pour l'objet distant. C'est comme une passerelle pour le programme client.

Le stub a les mêmes méthodes qu'un objet distant. Lorsque le client appelle l'objet stub, le stub transmet cette demande à un objet distant (Skeleton) via une infrastructure RMI qui est ensuite exécutée sur le serveur.

Stub Effectue les événements suivants: -

  1. Initie la connexion avec la JVM distante,
  2. Écrit et transmet les paramètres (Marshals) à la JVM distante,
  3. Attend le résultat,
  4. Lit (Unmarshalls) le résultat retourné,
  5. Passez le résultat reçu à l'appelant.

Squelette:

L'objet serveur qui réside dans une machine serveur est appelé Skeleton. Stub communique avec l'application serveur à l'aide d'un objet Skeleton intermédiaire.

La responsabilité de l'objet squelette est d'envoyer des paramètres à l'implémentation de la méthode et de renvoyer les valeurs de retour au client.

Skeleton Effectue les événements suivants: -

  1. Lit le paramètre transmis par le client,
  2. Appelle la méthode sur un objet distant réel,
  3. Transmettez / passez le résultat à l'appelant.

Couche Stub / Skeleton:

  • La couche Stub / Skeleton est chargée d'intercepter les appels émis par le client et de rediriger ces appels vers l'objet distant. Cette couche est également appelée couche de proxy. Stub et Skeleton sont les mandataires du client et du serveur. Les objets Stub et Skeleton sont comme une interface entre une application et le reste du système RMI.
  • Le but de cette couche est de transférer des données vers la couche de référence distante par sérialisation d'objet. Ce processus de conversion des données / objets en flux d'octets est appelé Marshalling et l'inverse est Unmarshalling. Le marshaling est effectué lors de la demande de l'objet auprès du serveur et le désarchivage est effectué lorsque les données / références d'objet sont reçues du serveur.

Couche de référence distante:

  • La couche proxy est connectée au mécanisme RMI via la couche de référence distante. Cette couche est responsable de la communication et du transfert d'objets entre le client et le serveur. La sémantique d'invocation de la connexion RMI est définie et prise en charge par cette couche.
  • La couche de référence distante est chargée de maintenir la session pendant l'appel de méthode. ie Il gère les références faites par le client à l'objet serveur distant. Cette couche est également responsable de la gestion des objets dupliqués.

Couche de transport:

La couche transport est chargée d'établir la communication entre les deux machines. Cette couche utilise le protocole TCP / IP standard pour la connexion. Le transport réel des données s'effectue à travers cette couche. Cette couche fait partie de la couche de référence distante.

Conclusion

  • Le RMI (Remote Method Invocation) est une API très utile fournie dans JAVA qui facilite la communication entre deux JVM différentes. Il permet à un objet d'appeler une méthode sur un objet résidant dans un autre espace d'adressage.
  • Il fournit un moyen sécurisé pour que les applications communiquent entre elles. Il atteint cette fonctionnalité au moyen des concepts Stub (objet appelant client) et Skeleton (objet distant résidant sur le serveur).
  • RMI est utilisé pour créer des applications distribuées. Il préserve le type de sécurité. L'architecture RMI minimise la complexité de l'application dans une architecture distribuée.

Articles recommandés

Cela a été un guide pour l'architecture RMI. Ici, nous discutons en détail de la conception RMI et de l'architecture avec un schéma fonctionnel approprié. Vous pouvez également consulter nos autres articles suggérés pour en savoir plus -

  1. Architecture d'entrepôt de données
  2. Qu'est-ce que le protocole TCP?
  3. Qu'est-ce qu'un logiciel de bureau?
  4. Questions d'entretiens chez CCNA