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

CORBA : des concepts à la pratique

  • Upload
    aron

  • View
    57

  • Download
    5

Embed Size (px)

DESCRIPTION

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. - PowerPoint PPT Presentation

Citation preview

Page 1: CORBA : des concepts à  la pratique

CORBA :des concepts à la pratique

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

1998

Page 2: CORBA : des concepts à  la pratique

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

CorbaScriptUn nouveau langage de scripts dédié à CORBAInterpré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

Les étapes de la construction de l’application CORBA

La définition du contrat IDLL’implantation des objets CORBALa création de serveurs et de clientsL’utilisation du service NommageLa création d’objets CORBALa notification des clients

Page 5: CORBA : des concepts à  la pratique

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

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

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

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

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

Un serveur CORBA1. Initialiser le bus CORBA

obtenir l’objet ORB2. Initialiser l’adaptateur d’objets

obtenir le BOA ou POA3. 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

Un client CORBA

1. Initialiser le bus (objet ORB)2. Créer les souches des objets à utiliser

2.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

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

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

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

Le service NommageEspace 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

Obtenir la référence du service NommageComment 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

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

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

L’implantation de la fabrique

FabriqueRepertoireRepertoireRepertoireRepertoire

creerRepertoire

Page 20: CORBA : des concepts à  la pratique

L’implantation de la fabrique

FabriqueRepertoireRepertoireRepertoireRepertoire

detruireRepertoire

Page 21: CORBA : des concepts à  la pratique

Une application d’administration de la fabriqueCré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

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

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

L’implantation du répertoire observé

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

par héritage ou délégationGestion 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

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

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

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

configuration du référentiel des implantationsPas 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 objetsVoir les langages de description d’architecture

Page 28: CORBA : des concepts à  la pratique

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

Disponibilité de CorbaScriptBus 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