Introduction à Corba

publicité
Introduction à Corba
Réunion Cube – 24/10/2003
P. Déchamboux (FTR&D DTL/ASR)
Le présent document contient des informations qui sont la propriété de France Télécom. L'acceptation de ce document par
son destinataire implique, de la part de ce dernier, la reconnaissance du caractère confidentiel de son contenu et
l'engagement de n'en faire aucune reproduction, aucune transmission à des tiers, aucune divulgation et aucune utilisation
commerciale sans l'accord préalable écrit de France Télécom R&D
France Télécom R&D
1
Contenu et déroulement
Références
http://www.omg.org/
http://corbaweb.lifl.fr/CORBA_des_concepts_a_la_pratique/
http://www.cs.wustl.edu/~schmidt/corba.html
Plan
vision Corba
mise en oeuvre de Corba
liaison et transport dans Corba
services « systèmes » et canevas de Corba
Annexe
exemple : HelloWorld
France Télécom R&D
2
Vision de Corba
France Télécom R&D
3
OMG : concepts-clés
Permettre l’interopérabilité des composants / applications
par l’intermédiaire d’un mode de coopération unifié : l’appel
d’objets distants
Gérer l’hétérogénéité des réseaux, machines, systèmes et
langages
Vision utilisateur = langage pivot commun : OMG-IDL
Offrir une architecture globale
France Télécom R&D
4
OMG : les objectifs techniques
Liaison avec tous les langages
Transparence des invocations
Invocation statique et dynamique
Système auto-descriptif
Activation automatique
Interopérabilité entre bus
France Télécom R&D
5
OMG : vision globale
Common Object Request Broker Architecture CORBA
appel de méthode réparti transparent
 passages de paramètres : in, out, in/out
 types de paramètres : types de base (entiers, string, etc), références d’objets,
objets par valeur
un bus à objets répartis (ORB)
 transport des requêtes, activation des objets
des services de base (CORBAservices)
des utilitaires communs (CORBAfacilities)
des interfaces de domaines = objets métiers
 « interopérabilité sémantique »
France Télécom R&D
6
OMA : l’architecture globale
Interfaces
de domaine
Objets
applicatifs
Utilitaires communs
Workflow
Télécoms
Spécifiques
Santé
Finance
DataWare
Administration
IHM
Bus d’objets répartis
Nommage
Vendeur
Interrogations
Sécurité
Cycle
de vie
Relations Collections Temps
Transactions Propriétés Persistance
Licences Externalisation
Events
Changements Concurrence
Services objet communs
France Télécom R&D
7
OMG :
le modèle client/serveur objet
Référence
d’objet
Interface
d’objet
France Télécom R&D
Code
d’implantation
Requête
Objet
CORBA
Activation
Etat
ORB
8
Mise en oeuvre de Corba
France Télécom R&D
9
OMG-IDL : le langage d’interfaces
Rôle du langage
décrire les interfaces des objets
langage pivot entre applications
générer des squelettes de programme dans les langages de
programmation des applications
France Télécom R&D
10
OMG-IDL : mise en oeuvre des
interfaces
Projection des descriptions OMG-IDL vers les langages
d’implantation des clients et des serveurs (e.g., C, C++, Java,
etc).
mode « statique »
Instanciation sous forme d’objets CORBA des descriptions
OMG-IDL dans un référentiel d’interfaces.
mode « dynamique »
France Télécom R&D
11
CORBA : les composantes du bus
Interface du bus
Adaptateur d’objet
Interface d’invocation statique
Interface de squelettes statiques
Interface d’invocation dynamique
Interface de squelettes dynamiques
SSI
SII
DII
ORB
Bus de communication
IR
France Télécom R&D
Référentiel
des interfaces
ImplR
DSI
OA
Référentiel
des implantations
12
Liaison et transport dans Corba
France Télécom R&D
13
Les couches de transport de CORBA
GIOP : protocole d’interopérabilité entre bus de la norme
CORBA 2
support à l’appel de méthode (enveloppe = REQUEST, REPLY, etc)
encodage des données : CDR
GIOP sur Internet = Internet Inter ORB Protocol (IIOP)
champs « service context » (ex: standardisation ctxt transactions,
sécurité)
France Télécom R&D
14
Nommage dans Corba
Noms du domaine Corba
Interoperable Object Reference : IOR
identification protocole
interface OMG-IDL
Sous-domaine Corba/Internet
adresse IP + port
clé de format libre (dépendant de l’adaptateur d’objet)
identificateur d’adaptateur d’objet
clé de format libre (dépendant de l’adaptateur d’objet)
France Télécom R&D
15
Mise en place d’une liaison
Invocation
Servant applicatif
Interface applicative (issue de l’interface IDL)
Talon client
(IOR)
Emballeur GIOP
IOR servant
Adaptateur
d’objet
Squelette serveur
Emballeur GIOP
Liaison IIOP
France Télécom R&D
16
Services « systèmes » et canevas de
Corba
France Télécom R&D
17
Les services communs (1)
Services de localisation d’objets
service de nommage (Naming)
pour retrouver un objet par un nom
service de type « pages blanches »
service de courtage (Trader)
pour retrouver un objet par des propriétés
service de type « pages jaunes »
France Télécom R&D
18
Les services communs (2)
Services de communications asynchrones
Events, Notification, Messaging
Services de sûreté de fonctionnement
Security, Transactions, Concurrence
Services concernant la vie des objets
Life Cycle, Property, Relationship, Externalization, Persistent Object,
Query, Collection, Versionning, Time, Licencing
France Télécom R&D
19
Exemple : « Hello World » en Java
France Télécom R&D
20
Chaine de production de programme
Hello.idl
Compilateur
OMG-IDL / Java
_StubForHello.java
HelloClient.java
HelloOperations.java
Hello.java
HelloHelper.java
HelloHolder.java
HelloPOA.java
HelloPOATie.java
HelloImpl.java
HelloServeur.java
Client
France Télécom R&D
Serveur
21
De l’IDL à Java
 Interface OMG-IDL Hello
<Hello.idl>
interface Hello {
void doHello();
};
 Interface Java HelloOperations, Hello
<Hello.java>
public interface HelloOperations {
public void doHello();
}
public interface Hello extends HelloOperations,
org.omg.CORBA.Object, org.omg.CORBA.portable.IDLEntity {}
Classes Java HelloHelper, HelloHolder
France Télécom R&D
22
Implantation du serveur Corba
<HelloServeur.java>
public class HelloServeur {
public static void main(String args[]) {
// Initialisation du Bus Corba et d’un POA
org.omg.CORBA.ORB orb = org.omg.CORBA.ORB.init(args, null);
org.omg.PortableServer.POA poa
= POAHelper.narrow(orb.resolve_initial_references("RootPOA"));
poa.the_POAManager().activate();
// récupération du serveur de nom
org.omg.CosNaming.NamingContext ns
= org.omg.CosNaming. NamingContextHelper.narrow(
orb.resolve_initial_references("NameService"));
// Creation du servant et enregistrement au serveur de noms
HelloImpl hello = new HelloImpl();
ns.rebind(
new org.omg.CosNaming.NameComponent[]
{new NameComponent("HelloObj","")},
hello);
// Mise en attente du serveur
orb.run();
}
France Télécom R&D
23
Implantation du client Corba
<HelloClient.java>
public class HelloClient {
public static void main(String args[]) {
// Initialisation du Bus Corba
org.omg.CORBA.ORB orb = org.omg.CORBA.ORB.init(args, null);
// récupération du serveur de nom
org.omg.CosNaming.NamingContext ns
= org.omg.CosNaming. NamingContextHelper.narrow(
orb.resolve_initial_references("NameService"));
// Récupération de la souche depuis le serveur de nom
org.omg.CORBA.Object obj_ref
= ns.resolve(new org.omg.CosNaming.NameComponent[]
{new NameComponent("HelloObj","")});
Hello hello = HelloHelper.narrow(obj_ref);
// Invocation de l'objet distant
hello.doHello();
}
}
France Télécom R&D
24
Les classes générées (client et
serveur)
 Classe _StubForHello : implantation du talon
sert à envoyer les requêtes
utilisé en lieu et place de l'objet Hello dans le client
 Classe HelloPOA
reçoit et décode les requêtes
implantation par héritage
 Classe HelloPOATie
reçoit et décode les requêtes
implantation par délégation
<HelloImpl.java>
public class HelloImpl extends HelloPOA {
public HelloImpl() {}
public void doHello() {
System.out.println("Hello world!");
}
}
France Télécom R&D
25
Corba dynamique
France Télécom R&D
26
L’invocation dynamique
Référentiel d’interfaces (IR)
accessible comme objet Corba
gestion de méta-objets Corba (ModuleDef, InterfaceDef,
OperationDef, AttributeDef, TypedefDef, …)
API (DII) de construction de requêtes
Un objet Request = un nom d’opération, une liste de couples
valeur - type (au sens de l’IR) et une structure pour le résultat
invoke
send_deferred + get_response, poll_response
send_oneway
France Télécom R&D
27
Le squelette dynamique
API (DSI) de décodage de requêtes
Pas d’utilisation de squelettes pré-générés
Utilisée pour implanter dynamiquement des objets
Cas d’utilisation : création de passerelles
France Télécom R&D
28
Téléchargement