Cette publication est accessible gratuitement
Télécharger

Vous aimerez aussi

Plan
Construction Construction
d’applications d’applications
r´eparties r´eparties
Gilles Roussel Gilles Roussel
Construction d’applications r´eparties
Plan Plan
Cours 1
D´efinition D´efinition
Qu’est ce qu’une application r´epartie?
Int´erˆets et Int´erˆets et
inconv´enients inconv´enients
Int´erˆets et inconv´enients de la r´epartition
Gilles Roussel
Les Les
Les plate-formes r´eparties ou middleware
intergiciels intergiciels
Gilles.Roussel@univ-mlv.fr
OMA OMA
L’Object Model Architecture
http://igm.univ-mlv.fr/~roussel/CORBA/
Architecture Architecture
Le serveur Le serveur
IR3
Le client Le client
6 octobre 2006
Gilles Roussel Construction d’applications r´eparties Gilles Roussel Construction d’applications r´eparties
Qu’est-ce qu’une application r´epartie? Int´erˆets de la r´epartition
Construction Construction
d’applications d’applications
r´eparties r´eparties
Gilles Roussel Gilles Roussel
Int´erˆets fonctionnels
Application r´epartie
D´ecentralisation des responsabilit´es
Plan Plan
Application d´ecoup´ee en diff´erentes parties fonctionnelles qui
Optimisation de l’utilisation des ressources (r´epartition de
D´efinition D´efinition
int´eragissent entre elles et qui sont physiquement s´epar´ees les
charge)
Int´erˆets et Int´erˆets et
inconv´enients inconv´enients
Am´elioration des performances
unes des autres dans plusieurs unit´es de traitement (plusieurs
Les Les
Fiabilit´e (redondance)
machines).
intergiciels intergiciels
Flexibilit´e
OMA OMA
R´ealisation de l’application en deux phases :
Les objets sont naturellement r´epartis
Architecture Architecture
Cartes `a puces
Le serveur d´ecoupage Le serveur
Satellites
Le client Le client
d´eploiement
Robots
Gilles Roussel Construction d’applications r´eparties Gilles Roussel Construction d’applications r´epartiesInconv´enients de la r´epartition Comment g´erer la r´epartition?
Construction Construction
d’applications d’applications
r´eparties r´eparties
Gilles Roussel Gilles Roussel
Plan Plan
D´efinition D´efinition Bas niveau :
Complexit´e de d´eveloppement
Int´erˆets et Int´erˆets et
outils de communication : socket, m´emoire partag´ee, etc.
inconv´enients inconv´enients
r`egles de communication : protocole d´edi´e
Probl`eme de portabilit´e
Les Les
intergiciels intergiciels
Haut niveau :
Probl`eme de maintenance
OMA OMA
utiliser un intergiciel (Middleware)
Architecture Architecture
Le serveur Le serveur
Le client Le client
Gilles Roussel Construction d’applications r´eparties Gilles Roussel Construction d’applications r´eparties
C’est quoi un intergiciel? Avantages et inconv´enients de CORBA
Construction Construction
d’applications d’applications
r´eparties r´eparties Standard de l’OMG http://www.omg.org/
Gilles Roussel Gilles Roussel
Ind´ependance/transparence vis `a vis au langage (Cobol, C,
Infrastructure de d´eveloppement :
C++, Java, ADA, smalltalk, etc.)
Plan Plan
g`ere les d´etails de la communication entre composants
D´efinition D´efinition
fournit des services pr´ed´efinis
Ind´ependance vis a` vis du syst`eme d’exploitation (Unix,
Int´erˆets et Int´erˆets et
fournit des « outils » de d´eveloppement
Windows, MacOS, PalmOS, etc.)
inconv´enients inconv´enients
Nombreux intergiciels :
Les Les
Ind´ependance vis `a vis du r´eseau (Internet, ATM, CAN,
intergiciels intergiciels
CORBA (Common Object Request Broker Architecture)
etc.)
OMA OMA
DCE (Distributed Computing Environment)
Pas d’implantation de r´ef´erence
Architecture Architecture
DCOM (Distributed Component Object Model)
Le serveur Le serveur
RMI (Remote Method Invocation) Nombreuses implantations ind´ependantes (BEA WebLogic,
Le client Le client
.NET Remoting, etc.
Borland Visibroker, IONA Orbix, RedHat Orbit, SUN Java,
etc.)
Complexe a` maˆıtriser
Gilles Roussel Construction d’applications r´eparties Gilles Roussel Construction d’applications r´epartiesR´ep`eres Object Model Architecture
Construction Construction
d’applications d’applications
r´eparties r´eparties
Gilles Roussel Gilles Roussel
HP/Xerox Appolo RPC (Remote Procedure Call) 1983
Plan Plan
SUN RPC pour NFS (Network File System) 1987
D´efinition D´efinition
X/Open DCE RPC 1989
Int´erˆets et Int´erˆets et
inconv´enients inconv´enients
CORBA 1.0 1990
Les Les
intergiciels intergiciels
RMI 1997
OMA OMA
RMI-IIOP 1999
Architecture Architecture
Le serveur .NET Remoting 2000 Le serveur
Le client Le client
CORBA 3.0.2 2004
Gilles Roussel Construction d’applications r´eparties Gilles Roussel Construction d’applications r´eparties
Les utilitaires communs
Les services communs
et les interfaces de domaine
Construction Construction
d’applications d’applications
r´eparties r´eparties
Gilles Roussel Gilles Roussel
Nommage
Plan Plan
Utilitaires communs :
D´efinition D´efinition
Temps
interface graphique
Int´erˆets et Int´erˆets et
Persistance administration syst`eme, etc.
inconv´enients inconv´enients
Les Les Interfaces de domaine :
Concurrence
intergiciels intergiciels
sant´e
S´ecurit´e
OMA OMA
t´el´ecommunications
Architecture ´ Architecture
Ev´enements
commerce ´electronique, etc.
Le serveur Le serveur
Transactions, etc.
Le client Le client
Gilles Roussel Construction d’applications r´eparties Gilles Roussel Construction d’applications r´epartiesObjet local Objet distribu´e
Construction Construction
d’applications d’applications
r´eparties r´eparties
Gilles Roussel Gilles Roussel
Plan Plan
D´efinition D´efinition
Int´erˆets et Int´erˆets et
inconv´enients inconv´enients
Les Les
intergiciels intergiciels
OMA OMA
Architecture Architecture
Le serveur Le serveur
Le client Le client
Gilles Roussel Construction d’applications r´eparties Gilles Roussel Construction d’applications r´eparties
Plus pr´ecis´ement Les ´etapes du d´eveloppement d’un objet distribu´e
Construction Construction
d’applications d’applications
r´eparties r´eparties
Gilles Roussel Gilles Roussel
D´efinir l’interface avec le langage IDL (Interface Definition
Plan Plan Langage)
D´efinition D´efinition
G´en´erer les classes n´ecessaires a` la distribution
Int´erˆets et Int´erˆets et
inconv´enients inconv´enients
D´efinir le code fonctionnel de l’objet distribu´e : le servant
Les Les
Distribuer l’objet au travers de l’ORB
intergiciels intergiciels
Initialiser l’ORB
OMA OMA
Enregistrer le servant de l’objet distribu´e dans l’ORB
Architecture Architecture
Rendre disponible une r´ef´erence permettant de localiser
Le serveur Le serveur
l’objet distribu´e
Le client Le client
Mettre l’ORB en attente de requˆetes
Souche = Stub
Squelette = Skeleton
Gilles Roussel Construction d’applications r´eparties Gilles Roussel Construction d’applications r´epartiesD´ecrire l’interface G´en´erer les classes
Construction Construction
d’applications d’applications
r´eparties r´eparties
Gilles Roussel Gilles Roussel
Hello.idl
Plan Plan
D´efinition D´efinition
# idlj -fall -td generated \
Int´erˆets et module cours1 { Int´erˆets et
inconv´enients inconv´enients -pkgPrefix cours1 fr.umlv.ir3.corba Hello.idl
interface Hello {
Les Les
# ls generated/fr/umlv/ir3/corba/cours1
intergiciels string hello(in string localisation); intergiciels
HelloHelper.java Hello.java
OMA OMA
};
HelloPOA.java HelloHolder.java
Architecture Architecture
};
HelloOperations.java _HelloStub.java
Le serveur Le serveur
Le client Le client
Gilles Roussel Construction d’applications r´eparties Gilles Roussel Construction d’applications r´eparties
Implanter l’objet distribu´e Distribuer l’objet
Construction Construction
d’applications d’applications
r´eparties r´eparties
HelloServer.java
Gilles Roussel Gilles Roussel
HelloServant.java
package fr.umlv.ir3.corba.cours1;
Plan Plan
import org.omg.CORBA.ORB;
import org.omg.PortableServer.POA;
D´efinition D´efinition
import org.omg.PortableServer.POAHelper;
package fr.umlv.ir3.corba.cours1;
Int´erˆets et Int´erˆets et
public class HelloServer {
inconv´enients inconv´enients
public static void main(String[] args) throws Exception {
public class HelloServant extends HelloPOA { ORB orb = ORB.init(args, null);
Les Les
HelloServant servant = new HelloServant();
intergiciels intergiciels
public String hello(String localisation) {
POA rootPOA = POAHelper.narrow(orb.resolve initial references("RootPOA"));
OMA OMA
byte[] id = rootPOA.activate object(servant);
return "Hello " + localisation;
org.omg.CORBA.Object ref = rootPOA.id to reference(id);
Architecture Architecture
String ior = orb.object to string(ref);
}
System.out.println(ior);
Le serveur Le serveur
rootPOA.the POAManager().activate();
}
System.out.println("Server running!");
Le client Le client
orb.run();
}
}
Gilles Roussel Construction d’applications r´eparties Gilles Roussel Construction d’applications r´epartiesUtiliser un objet distant Distribuer l’objet
Construction Construction
d’applications d’applications
r´eparties r´eparties
Gilles Roussel Gilles Roussel
HelloServer.java
Plan Plan
Connaˆıtre l’interface et ´eventuellement g´en´erer les classes
D´efinition D´efinition
correspondantes
package fr.umlv.ir3.corba.cours1;
Int´erˆets et Int´erˆets et
import org.omg.CORBA.ORB;
inconv´enients inconv´enients
Initialiser l’ORB
public class HelloClient {
Les Les
public static void main(String[] args) {
R´ecup´erer une r´ef´erence de l’objet distant
intergiciels intergiciels
ORB orb = ORB.init(args, null);
Hello h = HelloHelper.narrow(orb.string to object(args[0]));
OMA OMA
Obtenir la souche de l’objet distant de l’ORB
System.out.println(h.hello("World"));
}
Architecture Architecture
}
Appeler la m´ethode a` distance
Le serveur Le serveur
Le client Le client
Gilles Roussel Construction d’applications r´eparties Gilles Roussel Construction d’applications r´eparties