Title: CORBA : des concepts
1CORBA des concepts à la pratique
- J-M. Geib, P. Merle, C. Gransart,
- LIFL
- 1998
2Au sommaire
- Mise en pratique dun bus CORBA
- ORBacus de OOC
- Réalisation dune application CORBA
- un gestionnaire de répertoires dadresses
- En C, Java et CorbaScript
- un peu de pub pour CorbaScript
3CorbaScript
- Un nouveau langage de scripts dédié à CORBA
- Interprété et typage dynamique
- Orienté objet et  tout est objetÂ
- Utilisant les mécanismes dynamiques de
- CORBA DII, DSI, IFR
- Java JNI
- Conçu au LIFL et soumis à lOMG
4Les étapes de la construction de lapplication
CORBA
- La définition du contrat IDL
- Limplantation des objets CORBA
- La création de serveurs et de clients
- Lutilisation du service Nommage
- La création dobjets CORBA
- La notification des clients
5Une application client/serveur
Repertoire
Bus dobjets répartis CORBA sur Internet (IIOP)
6Le contrat IDL initial
- Réutiliser des spécifications IDL date
- Regrouper des définitions communes annuaire
- Définir les concepts manipulés Nom, Personne
- Définir les données échangées DesNoms
- Définir linterface des objets Repertoire
- des opérations ajouterPersonne
- des exceptions ExisteDeja
- des attributs (paires dopérations) libelle
- Définir des types pour limplantation
DesPersonnes
7Limplantation C du répertoire
- Hérite de la classe squelette
- en ORBacus/C, annuaire_Repertoire_skel
- Définit la structure interne
- le libellé et la liste des personnes
- Implante les attributs et opérations
- respecter les signatures définies par le
squelette - les exceptions sont levées classiquement
- Dupliquer les données à garder et les retours
- gestion mémoire complexe
8Linvocation Java du répertoire
- A travers les souches IDL
- package fr.lifl.annuaire
- Invocations comme si en local
- notation classique dappel de méthodes
- passage par valeur pour le mode in
- tout est objet (Personne, Date, Mois)
- Gestion naturelle des exceptions
9Linvocation en CorbaScript
- Langage simple à utiliser
- Tout est objet et typage dynamique
- Accès direct aux définitions OMG-IDL
- désignation CorbaScript nom IDL
- via le référentiel des interfaces
- Invocation dynamique
- pas de génération de souches
- masquant la complexité du mécanisme DII
10Un serveur CORBA
- 1. Initialiser le bus CORBA
- obtenir lobjet ORB
- 2. Initialiser ladaptateur dobjets
- obtenir le BOA ou POA
- 3. Créer les implantations dobjets
- 4. Enregistrer les implantations par ladaptateur
- implicite en C et Java ou explicite en
CorbaScript - 5. Diffuser leurs références
- afficher une chaîne codifiant lIOR
- 6. Attendre des requêtes venant du bus
11Un client CORBA
- 1. Initialiser le bus (objet ORB)
- 2. Créer les souches des objets à utiliser
- 2.a. obtenir les références dobjet (IOR)
- 2.b. convertir vers les types nécessaires
- narrow contrôle le typage à travers le réseau
- 3. Réaliser les traitements
- Rem. éviter lopérateur bind (2.a 2.b)
- spécifique à chaque produit donc non portable
12Un client CorbaScript
- Langage dédié à CORBA
- masque linitialisation du bus
- Cest vraiment simple -)
- création des souches
- Script saisi en interactif !
- test dimplantations
- administration dobjets existants
13Lexécution sur le bus CORBA
Repertoire
Bus dobjets répartis CORBA sur Internet (IIOP)
- Diffusion de lIOR non gérée par le bus
14Les services de recherche dobjets CORBA
- Services Nommage et/ou Vendeur
15Le service Nommage
- Espace de désignation symbolique CosNaming
- association nom - référence dobjet
- graphes de répertoires NamingContext
- chemin daccès Name
- Opérations principales
- ajouter une association bind, rebind, ...
- résoudre une association resolve
- détruire une association unbind
- lister le contenu list
- détruire le contexte destroy
16Obtenir la référence du service Nommage
- Comment retrouver la référence de ce service ?
- Cest un  objet notoire du bus CORBA
- de nom NameService
- fixé par configuration du produit utilisé
- Quelque soit le langage, le scénario est
- a. opération CORBAORBresolve_initial_reference
s - b. conversion en CosNamingNamingContext
- En CorbaScript, lopérateur narrow est implicite
17Utilisations du service Nommage
- Enregistrer une référence
- diffusion par un serveur de ses références
dobjet - (2) création dun chemin
- (3) opération bind ou rebind
- Rechercher une référence
- (2) création dun chemin valide
- (3) opération resolve
- (4) conversion vers le type nécessaire
- A noter la simplicité avec CorbaScript
18Le cycle de vie des objets
- Problème
- actuellement, 1 répertoire 1 serveur
- pas de création/destruction dobjets à distance
- seulement invocation dopérations
- Solution
- notion de fabrique dobjets
- exprimée en OMG-IDL
- Cest un canevas de conception
- voir aussi le service LifeCycle
19Limplantation de la fabrique
Repertoire
Fabrique
20Limplantation de la fabrique
Repertoire
Fabrique
21Une application dadministration de la fabrique
- Création dun nouveau répertoire et mise Ã
disposition par le service Nommage - 1. Initialiser le bus CORBA
- 2. Obtenir le service Nommage (NS)
- 3. Obtenir la fabrique depuis le NS
- 4. Créer un répertoire
- 5. Enregistrer le répertoire dans le NS
- A noter la simplicité avec CorbaScript
- le script peut être saisi interactivement
22La notification des clients
Repertoire
Bus dobjets répartis CORBA sur Internet (IIOP)
- Service Evénements ou canevas de conception
23Un canevas de conception pour la notification des
clients
- Design Pattern  Observé - ObservateurÂ
- Côté application notifiée (Observateur)
- 1 interface à implanter ObservateurRepertoire
- 1 opération par type dévénement
- oneway pour communication asynchrone
- Côté serveur notifiant (Observé)
- 1 interface pour enregistrer les observateurs
- héritage dinterfaces OMG-IDL
24Limplantation du répertoire observé
- Utilisation du squelette OMG-IDL
- Réutilisation de limplantation existante
- par héritage ou délégation
- Gestion de la liste des observateurs
- Redéfinition des opérations impliquant une
notification - réutilisation du code existant
- notification des observateurs
- prise en charge des pannes !
25Une application cliente notifiée
- Une application cliente peut implanter des objets
- souvent objets client objets  callbackÂ
- CORBA nest pas strictement client/serveur
- Le scénario de lobservation
- obtenir lobjet observable
- créer lobjet observateur
- abonner lobservateur auprès de lobservé
- traiter les notifications ...
- mettre fin à labonnement
26Bilan sur lapplication
- Construire des applications CORBAcest tout de
même simple mais il faut - respecter la structure des applications
- se plier aux règles de projection/programmation
- Pour obtenir
- la portabilité du code
- linteropérabilité entre implantations
- Lapplication présentée peut facilement être
adaptée à dautres contextes
27Et après ?
- Plusieurs serveurs/fabriques mais
- Pas dactivation automatique des serveurs
- configuration du référentiel des implantations
- Pas dobjets persistants
- Pas de sûreté de fonctionnement
- sécurité, tolérance aux pannes, transactions
- Utiliser les services CORBA fournis -)
- Pas de configuration/reconfiguration
- placement/déplacement des serveurs et des objets
- Voir les langages de description darchitecture
28Conclusion
- CORBA ça marche et cest simple
- Choisir son langage dimplantation
- C complexe et moins portable
- Java portable et plus lent
- CorbaScript encore plus convivial
- Choisir son bus
- 1 bus 1 bibliothèque
- mixer les bus cest possible
- Rendez-vous à la démonstration !
29Disponibilité de CorbaScript
- Bus CORBA
- ORBacus ltURLhttp//www.ooc.comgt
- MICO ltURLhttp//www.vsb.cs.uni-frankfurt.de/mico
/gt - A venir Visibroker, OAK,
- Environnements systèmes
- Sun Solaris, Linux, SGI IRIX, HP-UX, AIX, W95/NT
- A venir JDK 1.1.x et 1.2
- Gratuit avec les sources C
- URL http//corbaweb.lifl.fr/CorbaScript