29
CORBA : des concepts à la pratique J-M. Geib, P. Merle, C. Gransart, LIFL 1998

CORBA : des concepts à la pratique J-M. Geib, P. Merle, C. Gransart, LIFL 1998

Embed Size (px)

Citation preview

Page 1: CORBA : des concepts à la pratique J-M. Geib, P. Merle, C. Gransart, LIFL 1998

CORBA :des concepts à la pratique

J-M. Geib, P. Merle, C. Gransart,

LIFL1998

Page 2: CORBA : des concepts à la pratique J-M. Geib, P. Merle, C. Gransart, LIFL 1998

Au sommaire

Mise en pratique d’un bus CORBA ORBacus de OOC

Réalisation d’une application CORBA un gestionnaire de répertoires d’adresses

En C++, Java et CorbaScript un peu de pub pour CorbaScript

Page 3: CORBA : des concepts à la pratique J-M. Geib, P. Merle, C. Gransart, LIFL 1998

CorbaScript

Un nouveau langage de scripts dédié à CORBA

Interprété et typage dynamiqueOrienté objet et « tout est objet »

Utilisant les mécanismes dynamiques de CORBA : DII, DSI, IFR Java : JNI

Conçu au LIFL et soumis à l’OMG

Page 4: CORBA : des concepts à la pratique J-M. Geib, P. Merle, C. Gransart, LIFL 1998

Les étapes de la construction de l’application CORBA

La définition du contrat IDL

L’implantation des objets CORBA

La création de serveurs et de clients

L’utilisation du service Nommage

La création d’objets CORBA

La notification des clients

Page 5: CORBA : des concepts à la pratique J-M. Geib, P. Merle, C. Gransart, LIFL 1998

Une application client/serveur

Bus d’objets répartis CORBA sur Internet (IIOP)

Client Java Serveur C++

Repertoire

Traitement

Contrat IDL

Page 6: CORBA : des concepts à la pratique J-M. Geib, P. Merle, C. Gransart, LIFL 1998

Le contrat IDL initial

Réutiliser des spécifications IDL : dateRegrouper des définitions communes : annuaireDéfinir les concepts manipulés : Nom, PersonneDéfinir les données échangées : DesNomsDéfinir l’interface des objets : Repertoire

des opérations : ajouterPersonne des exceptions : ExisteDeja des attributs (paires d’opérations) : libelle

Définir des types pour l’implantation : DesPersonnes

Page 7: CORBA : des concepts à la pratique J-M. Geib, P. Merle, C. Gransart, LIFL 1998

L’implantation 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

Page 8: CORBA : des concepts à la pratique J-M. Geib, P. Merle, C. Gransart, LIFL 1998

L’invocation Java du répertoire

A travers les souches IDL package fr.lifl.annuaire

Invocations comme si en local notation classique d’appel de méthodes passage par valeur pour le mode in tout est objet (Personne, Date, Mois)

Gestion naturelle des exceptions

Page 9: CORBA : des concepts à la pratique J-M. Geib, P. Merle, C. Gransart, LIFL 1998

L’invocation 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

Page 10: CORBA : des concepts à la pratique J-M. Geib, P. Merle, C. Gransart, LIFL 1998

Un serveur CORBA

1. Initialiser le bus CORBA obtenir l’objet ORB

2. Initialiser l’adaptateur d’objets obtenir le BOA ou POA

3. Créer les implantations d’objets4. Enregistrer les implantations par l’adaptateur

implicite en C++ et Java ou explicite en CorbaScript

5. Diffuser leurs références afficher une chaîne codifiant l’IOR

6. Attendre des requêtes venant du bus

Page 11: CORBA : des concepts à la pratique J-M. Geib, P. Merle, C. Gransart, LIFL 1998

Un client CORBA

1. Initialiser le bus (objet ORB)

2. Créer les souches des objets à utiliser2.a. obtenir les références d’objet (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 l’opérateur bind (2.a + 2.b) spécifique à chaque produit donc non portable

Page 12: CORBA : des concepts à la pratique J-M. Geib, P. Merle, C. Gransart, LIFL 1998

Un client CorbaScript

Langage dédié à CORBA masque l’initialisation du bus

C’est vraiment simple :-) création des souches

Script saisi en interactif ! test d’implantations administration d’objets existants

Page 13: CORBA : des concepts à la pratique J-M. Geib, P. Merle, C. Gransart, LIFL 1998

L’exécution sur le bus CORBA

Bus d’objets répartis CORBA sur Internet (IIOP)

Client Java Serveur C++

Repertoire

Traitement

IOR

Diffusion de l’IOR non gérée par le bus

Page 14: CORBA : des concepts à la pratique J-M. Geib, P. Merle, C. Gransart, LIFL 1998

Les services de recherche d’objets CORBA

Services Nommage et/ou Vendeur

Bus d’objets répartis CORBA sur Internet (IIOP)

Serveur C++Client Java

Repertoire

Traitement

IOR

Service derecherched’objets

IOR

Page 15: CORBA : des concepts à la pratique J-M. Geib, P. Merle, C. Gransart, LIFL 1998

Le service Nommage

Espace de désignation symbolique : CosNaming association nom - référence d’objet graphes de répertoires : NamingContext chemin d’accè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

Page 16: CORBA : des concepts à la pratique J-M. Geib, P. Merle, C. Gransart, LIFL 1998

Obtenir la référence du service Nommage

Comment retrouver la référence de ce service ?

C’est un « objet notoire » du bus CORBA de nom NameService fixé par configuration du produit utilisé

Quelque soit le langage, le scénario esta. opération CORBA::ORB::resolve_initial_referencesb. conversion en CosNaming::NamingContext

En CorbaScript, l’opérateur narrow est implicite

Page 17: CORBA : des concepts à la pratique J-M. Geib, P. Merle, C. Gransart, LIFL 1998

Utilisations du service Nommage

Enregistrer une référence diffusion par un serveur de ses références d’objet (2) création d’un chemin (3) opération bind ou rebind

Rechercher une référence (2) création d’un chemin valide (3) opération resolve (4) conversion vers le type nécessaire

A noter la simplicité avec CorbaScript

Page 18: CORBA : des concepts à la pratique J-M. Geib, P. Merle, C. Gransart, LIFL 1998

Le cycle de vie des objets

Problème actuellement, 1 répertoire = 1 serveur pas de création/destruction d’objets à distance seulement invocation d’opérations

Solution notion de fabrique d’objets exprimée en OMG-IDL

C’est un canevas de conception voir aussi le service LifeCycle

Page 19: CORBA : des concepts à la pratique J-M. Geib, P. Merle, C. Gransart, LIFL 1998

L’implantation de la fabrique

FabriqueRepertoireRepertoire

RepertoireRepertoire

creerRepertoire

Page 20: CORBA : des concepts à la pratique J-M. Geib, P. Merle, C. Gransart, LIFL 1998

L’implantation de la fabrique

FabriqueRepertoireRepertoire

RepertoireRepertoire

detruireRepertoire

Page 21: CORBA : des concepts à la pratique J-M. Geib, P. Merle, C. Gransart, LIFL 1998

Une application d’administration de la fabrique

Création d’un 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

Page 22: CORBA : des concepts à la pratique J-M. Geib, P. Merle, C. Gransart, LIFL 1998

La notification des clients

Bus d’objets répartis CORBA sur Internet (IIOP)

Client Serveur

Repertoire

Traitement

Service Evénements ou canevas de conception

modificationnotification

consultation

Page 23: CORBA : des concepts à la pratique J-M. Geib, P. Merle, C. Gransart, LIFL 1998

Un 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 d’interfaces OMG-IDL

Page 24: CORBA : des concepts à la pratique J-M. Geib, P. Merle, C. Gransart, LIFL 1998

L’implantation du répertoire observé

Utilisation du squelette OMG-IDLRéutilisation de l’implantation existante

par héritage ou délégation

Gestion de la liste des observateursRedéfinition des opérations impliquant une

notification réutilisation du code existant notification des observateurs prise en charge des pannes !

Page 25: CORBA : des concepts à la pratique J-M. Geib, P. Merle, C. Gransart, LIFL 1998

Une application cliente notifiée

Une application cliente peut implanter des objets souvent objets client = objets « callback » CORBA n’est pas strictement client/serveur

Le scénario de l’observation obtenir l’objet observable créer l’objet observateur abonner l’observateur auprès de l’observé … traiter les notifications ... mettre fin à l’abonnement

Page 26: CORBA : des concepts à la pratique J-M. Geib, P. Merle, C. Gransart, LIFL 1998

Bilan sur l’application

Construire des applications CORBAc’est 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 l’interopérabilité entre implantations

L’application présentée peut facilement être adaptée à d’autres contextes

Page 27: CORBA : des concepts à la pratique J-M. Geib, P. Merle, C. Gransart, LIFL 1998

Et après ?Plusieurs serveurs/fabriques mais …Pas d’activation automatique des serveurs

configuration du référentiel des implantations

Pas d’objets persistantsPas 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 d’architecture

Page 28: CORBA : des concepts à la pratique J-M. Geib, P. Merle, C. Gransart, LIFL 1998

Conclusion

CORBA : ça marche et c’est simpleChoisir son langage d’implantation

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 : c’est possible

Rendez-vous à la démonstration !

Page 29: CORBA : des concepts à la pratique J-M. Geib, P. Merle, C. Gransart, LIFL 1998

Disponibilité de CorbaScript

Bus CORBA: ORBacus <URL:http://www.ooc.com> MICO

<URL:http://www.vsb.cs.uni-frankfurt.de/~mico/> 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