CORBA, Java et RMI
Transcription
CORBA, Java et RMI
Java, CORBA et RMI JAVA, CORBA et RMI objectif : développer des applications client/serveur incluant des objets répartis Java / CORBA : client/serveur hétérogènes Java / RMI : client/serveur homogènes plan : — l’architecture CORBA — le développement d’applications avec CORBA — applets Java / CORBA — applets Java /RMI A. Le Grand,1997 1 Java, CORBA et RMI A. Le Grand,1997 traitement serveur CORBA : une introduction client objet méthode API CORBA Adaptateur d’objets CORBA Courtier d’objets 2 Java, CORBA et RMI CORBA : une introduction issu de l’OMG (Object Management Group) (+ de 500 entreprises) objectif : créer une infrastructure à objets ouverte CORBA (Common Object Request Broker Architecture) — bus à objets — architecture définit la forme des composants et leur mode d’interopérabilité (IDL) A. Le Grand,1997 3 Java, CORBA et RMI CORBA : une introduction 4 IDL (Interface Definition Language) — langage neutre de spécification d’interface — définit les interfaces contractuelles d’un composant avec ses clients potentiels. composants portables : — entre langages, — entre outils, — entre systèmes d’exploitation, — entre réseaux A. Le Grand,1997 Java, CORBA et RMI Objet réparti CORBA — composant logiciel accessible par des clients éloignés via des appels de méthode. — les clients connaissent l’interface de l’objet. C++ Java IDL IDL IDL Client Serveur Courtier d’objets (Object Request Broker) IDL IDL IDL Ada C++ Java 5 — son mode de fabrication est transparent pour ses clients potentiels — la machine et son système d’exploitation ne sont pas connues des clients Ada A. Le Grand,1997 Java, CORBA et RMI Interface Definition Language 6 — définition contractuelle de l’interface d’un composant avec ses clients potentiels — aucun détail d’implantation (langage, système d’exploitation) — méthodes spécifiées en IDL peuvent être définies par tout langage fournissant des liens avec CORBA — méthodes sont utilisées selon les constructions du langage (procédure, méthode) A. Le Grand,1997 Java, CORBA et RMI Exemple d’interface float depot(float amount); float retrait(float amount); float litSolde(); }; module Gestion_de_compte { interface compteDistant { } A. Le Grand,1997 7 Java, CORBA et RMI implantation des objets Architecture d’un courtier CORBA client référentiel d’implantation squelettes appel de adaptateur squelette statiques dynamique d’objets Courtier d’objets (ORB) interface appel souches dynamique client en IDL de l’ORB référentiel d’interface source OMG — l’ORB établit des relations client/serveur entre des objets. — l’ORB a la responsabilité de trouver un objet implantant la requête A. Le Grand,1997 8 Java, CORBA et RMI implantation des objets Souche statique client IDL client source OMG Courtier d’objets référentiel d’implantation squelettes appel de interface statiques squelette adaptateur appel souches dynamique d’objets dynamique client en IDL de l’ORB référentiel d’interface — interface précompilée statique aux services objets — mandataire (proxi) local pour un objet serveur 9 — du point de vue du client, la souche agit comme un appel local — le client possède une souche IDL pour chaque interface A. Le Grand,1997 Java, CORBA et RMI implantation des objets Souche IDL du serveur (Squelette) client source OMG Courtier d’objets référentiel d’implantation squelettes appel de interface statiques squelette adaptateur appel souches dynamique d’objets dynamique client en IDL de l’ORB référentiel d’interface — interface statique à chaque service exporté par le serveur. — souche créée par compilation de l’IDL A. Le Grand,1997 10 Java, CORBA et RMI implantation des objets Adaptateur d’objets client source OMG Courtier d’objets référentiel d’implantation squelettes appel de interface statiques squelette adaptateur appel souches dynamique d’objets dynamique client en IDL de l’ORB référentiel d’interface — mécanisme permettant à l’implantation d’un objet d’accéder aux services de l’ORB — fournit un environnement d’exécution complet pour une application serveur A. Le Grand,1997 11 Java, CORBA et RMI Des services de l’adaptateur d’objets 12 — enregistrement des classes serveur dans le réf. d’implantation — création des objets durant l’exécution — gestion des références d’objet (correspondance entre les références propres de l’ORB et celles de l’implantation) — signal de la présence des serveurs d’objet — traitement des requêtes client entrantes A. Le Grand,1997 Java, CORBA et RMI implantation des objets Référentiel d’implantation client source OMG Courtier d’objets référentiel d’implantation squelettes appel de interface statiques squelette adaptateur appel souches dynamique d’objets dynamique client en IDL de l’ORB référentiel d’interface 13 — gestion des informations sur les classes, les objets instanciés et leurs ID. — il n’est utilisé que lors de l’exécution A. Le Grand,1997 Java, CORBA et RMI implantation des objets adaptateur des objets instancier référentiel d’ implantations 14 mise en œuvre d’objets répartis (CORBA) Définir les interfaces en IDL Squelettes serveur Compiler C++ Ajouter le code aux squelettes Souches (squelettes) compiler IDL vers C++ compiler IDL vers Java Souches IDL client A. Le Grand,1997 Java, CORBA et RMI Définition des interfaces — terminologie OMG : interface <-> classe opération <-> méthode — syntaxe proche du C++ fichier IDL à compiler selon les langages cible module : ensemble de définitions d’interfaces interface : ensemble d’attributs et d’opérations (sans implantation) héritage (multiple) entre interfaces opération : méthode avec des paramètres (in, out, inout) A. Le Grand,1997 15 Java, CORBA et RMI Compilation de la souche serveur exemple : compilateur IDL en C++ 16 compilation de l’ interface : souches serveur (squelette) squelette contient : — types définis en IDL — code pour faire correspondre les requêtes aux méthodes — corps vide des méthodes compilation classes complètes : implantation des objets A. Le Grand,1997 Java, CORBA et RMI Programme serveur instanciation de l’objet serveur enregistrement de cet objet par l’adaptateur d’objet l’objet est alors dans le référentiel d’implantation et accessible pour rendre les services A. Le Grand,1997 17 Java, CORBA et RMI Compilation de la souche client compilateur IDL en Java 18 souche client : classe Java classe est complète le corps des méthodes contient les informations permettant de relayer l’appel sur l’objet serveur. A. Le Grand,1997 Java, CORBA et RMI Applet cliente obtention d’une référence sur l’objet distant — on utilise le nom d’enregistrement de l’objet serveur appels des méthodes de l’objet de manière transparente les souches prennent en charge l’arrangement des paramètres et leur circulation à travers le courtier A. Le Grand,1997 19 Java, CORBA et RMI Corba: fin de méthode Corba: appel de méthode http: téléchargement de l’applet http: requête de l’url de l’applet objet distant serveur d’objets serveur www machine serveur utilisation : Applet Java/Corba machine utilisateur applet Java butineur web A. Le Grand,1997 20 Java, CORBA et RMI Avantages de Corba client et serveurs : langages quelconques indépendance des langages — interfaces définies en IDL réutilisation du code existant neutralité par rapport aux fournisseurs — saine émulation services de Corba — sécurité, — transaction, ... A. Le Grand,1997 21 Java, CORBA et RMI Java/Corba versus Corba clients Java serveur langage quelconque 22 déploiement — installation automatique — indépendance de la plate-forme : Avec Corba seulement, la version du logiciel doit être gérée pour chaque plate-forme maintenance A. Le Grand,1997 Java, CORBA et RMI DCOM versus Corba contrôlé par un seul fournisseur dépendance du système d’exploitation (Win95 / NT) 23 réutilisation du code existant limité aux plateformes et Win95 / NT ajout de services en cours applets Java/DCOM ne fonctionnent que sur Win95 / NT A. Le Grand,1997 Java, CORBA et RMI Java /RMI même principe que CORBA : — interfaces — élaboration de souches Exemple : gestion de compte en banque à distance 24 Applet Java: l’utilisateur effectue des dépôts et des retraits d’argent sur un compte géré à distance Objet distant de gestion du compte : maintient le solde et effectue les opérations A. Le Grand,1997 Java, CORBA et RMI Interface Java 25 public interface compteDistant extends java.rmi.Remote { // depot d'argent float depot(float amount) throws java.rmi.RemoteException; // retrait d'argent float retrait(float amount) throws java.rmi.RemoteException; // lecture du solde float litSolde() throws java.rmi.RemoteException; } A. Le Grand,1997 Java, CORBA et RMI Développement de l’objet serveur définition de l’interface définition de l’implantation spécification du code des méthodes de l’interface définition du constructeur pour l’objet distant 26 lancement du serveur création et installation d’un gestionnaire de sécurité création d’une instance de l’objet distant enregistrement de l’objet sur “le référentiel d’implantation” A. Le Grand,1997 Java, CORBA et RMI Application serveur public class compteServeur extends UnicastRemoteObject implements compteDistant { float solde = 0; ... // constructeur public static void main(String args[]) { System.setSecurityManager(new RMISecurityManager()); try { compteServeur UnCompte= new compteServeur(); Naming.rebind("gestionCompteDistant", UnCompte); } catch (Exception e) {... } // implantation des méthodes de l’interface ... } A. Le Grand,1997 27 Java, CORBA et RMI Développement de l’applet cliente Déclaration d’une référence sur un objet implantant l’interface Affectation de cette référence à l’objet serveur déclaré dans le référentiel d’implantation appels des méthodes distantes (comme en local) A. Le Grand,1997 28 Java, CORBA et RMI Applet cliente public class AppletClient extends Applet implements ActionListener { private compteDistant compte; 29 public AppletClient(){ try { compte=(compteDistant) Naming.lookup ("//site/gestionCompteDistant"); } catch (Exception e) {... } } ... compte.depot(montant); // appel de méthode ... A. Le Grand,1997 Java, CORBA et RMI Compilation et déploiement compilation compilation des sources serveur et clientjavac) ( génération des souches r ( mic) déploiement démarrer le référentiel d’implantation rmiregistry) ( lancer le programme serveur télécharger et exécuter l’applet A. Le Grand,1997 30 Java, CORBA et RMI Avantages de Java/RMI clients Java serveur Java technologie identique à Corba pas d’IDL : interface Java ramasse-miettes distribué téléchargement automatique des classes des arguments des méthodes A. Le Grand,1997 31 Java, CORBA et RMI Java/RMI versus Java/Corba programmation versus intégration pas d’achat de licences de développement et d’utilisation dépendance du langage Java indépendance des plates-formes services moindres (pour le moment) problème de réutilisation du code ancien performances A. Le Grand,1997 32 Java, CORBA et RMI Quelques pistes... 33 intégration de l'existant SGBD --> JDBC (pilote sur le serveur ou sur le client) programmes --> Corba développement de nouvelles applications distribuées critères de distribution des objets RMI Corba coté client applets Java A. Le Grand,1997