1 / 29

CORBA : des concepts à la pratique

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.

aron
Télécharger la présentation

CORBA : des concepts à la pratique

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

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

  3. CorbaScript • 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 à l’OMG

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

  5. Client Java Serveur C++ Contrat IDL Traitement Une application client/serveur Repertoire Bus d’objets répartis CORBA sur Internet (IIOP)

  6. Le 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 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

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

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

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

  10. 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’objets 4. 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

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

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

  13. Client Java Serveur C++ IOR Traitement L’exécution sur le bus CORBA Diffusion de l’IOR non gérée par le bus Repertoire Bus d’objets répartis CORBA sur Internet (IIOP)

  14. Client Java Serveur C++ Traitement Service de recherche d’objets Repertoire IOR IOR Bus d’objets répartis CORBA sur Internet (IIOP) Les services de recherche d’objets CORBA Services Nommage et/ou Vendeur

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

  16. 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 est a. opération CORBA::ORB::resolve_initial_references b. conversion en CosNaming::NamingContext • En CorbaScript, l’opérateur narrow est implicite

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

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

  19. creerRepertoire Repertoire Repertoire Repertoire L’implantation de la fabrique Repertoire Fabrique

  20. Repertoire Repertoire Repertoire detruireRepertoire L’implantation de la fabrique Repertoire Fabrique

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

  22. Client Serveur notification modification Traitement consultation La notification des clients Service Evénements ou canevas de conception Repertoire Bus d’objets répartis CORBA sur Internet (IIOP)

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

  24. L’implantation du répertoire observé • Utilisation du squelette OMG-IDL • Réutilisation de l’implantation 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 !

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

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

  27. Et après ? • Plusieurs serveurs/fabriques mais … • Pas d’activation automatique des serveurs • configuration du référentiel des implantations • Pas d’objets 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 d’architecture

  28. Conclusion • CORBA : ça marche et c’est simple • Choisir 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 !

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

More Related