CORBA, Java et RMI - (CUI)

publicité
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
Téléchargement