
0f3c9752467201ba2344a279c50e05a7.ppt
- Количество слайдов: 124
ICAR’ 03 École d’été sur les Intergiciels et sur la Construction d’Applications Réparties Le modèle de composants CORBA Philippe Merle Project Jacquard (INRIA et LIFL) http: //www. lifl. fr/~merle
Plan n Quelques rappels sur CORBA u Objectifs, historique, principes de fonctionnement, principaux défauts n Introduction au modèle de composants CORBA u Points clés, comparaisons avec EJB, COM et. NET u Le cadre global de construction d’applications CCM n Le modèle abstrait de composants CORBA u Concepts et nouvelles constructions du langage OMG IDL 3. 0 n Le conditionnement, l’assemblage et le déploiement CORBA u Les archives de composant et d’assemblage u Le processus de déploiement et ses interfaces n Les conteneurs CORBA u Politiques de gestion des services n Conclusions u Implantations CCM et activités OMG en cours autour du CCM © 2003, P. Merle ICAR’ 03 2
Quelques rappels sur CORBA © 2003, P. Merle ICAR’ 03 3
CORBA n Spécification d’un modèle de composants logiciels répartis et des interfaces de l’intergiciel associé u CORBA pour Common Object Request Broker Architecture n Fait parti d’un large ensemble de spécifications définies par le consortium international Object Management Group (OMG) u Object Management Architecture (OMA) v Des services communs s Nommage, courtage, notification, transactions, persistance, sécurité, … v Des interfaces orientées métiers / domaines s Air Traffic Control, Gene Expression, Software Radio, Workflow Management, … u Model Driven Architecture (MDA) v Des technologies d’ingénierie dirigée par les modèles s s © 2003, P. Merle Unifed Modeling Language (UML) Meta Object Facilities (MOF) XML Metadata Interchange (XMI) … ICAR’ 03 4
Objectifs de CORBA n Ouvert u Spécification indépendant des fournisseurs et des implantations n Hétérogénéité u Multi-langages, multi-OSs, multi-réseaux, multi-fournisseurs u Via OMG Interface Definition Language (OMG IDL) n Portabilité u Code applicatif indépendant des implantations CORBA u Projections standardisées OMG IDL vers langages de programmation n Interopérabilité u Protocole réseau commun entre implantations CORBA v General Inter-ORB Protocol (GIOP) v Internet Inter-ORB Protocol (IIOP) u Vers d’autres modèles comme OLE, COM et EJB © 2003, P. Merle ICAR’ 03 5
Historique de CORBA n CORBA 1. 0 (1991) u Modèle orienté objet, OMG IDL et interfaces de l’intergiciel n CORBA 2. 0 (1995) u C++, interopérabilité GIOP/IIOP et COM u v 2. 1 (1997) : COBOL et ADA u v 2. 2 (1998) : Java et Portable Object Adaptor (POA) u v 2. 3 (1999) : révisions techniques u v 2. 4 (2000) : Asynch. Messaging, Minimum CORBA, RT CORBA u v 2. 5 (2001) : Intercepteurs portables, FT CORBA u v 2. 6 (2001) : Sécurité interopérable n CORBA 3. 0 (2002) u Composants, langages de script (e. g. OMG IDLscript) © 2003, P. Merle ICAR’ 03 6
Intergiciel CORBA Transparence vis-à-vis de la distribution et de l’hétérogénéité Client Appels de méthodes à distance Objet Interface OMG IDL Compilateur OMG IDL ORB Squelette Optimisation si co-localisation i. e. pas IIOP ni réseau Souche POA PI PI PI ORB IIOP sur réseau Internet © 2003, P. Merle ICAR’ 03 7
Intergiciel CORBA n Divers modèles d’invocations de méthodes u Static Invocation Interface (SII) v Contrôle du typage des invocations à la compilation v Projection OMG IDL vers souches / squelettes u Dynamic Invocation Interface (DII) + Dynamic Skeleton Interface (DSI) v Contrôle du typage des invocations à l’exécution v Souche et squelette génériques v Découverte OMG IDL via Interface Repository u Asynchronous Method Invocation (AMI) v Appel de méthodes asynchrones v Résultats obtenues par scrutation périodique ou appel retour u Les trois approches sont compatibles et composables n Profils spécialisés u Minimum u Real-Time u Fault-Tolerance © 2003, P. Merle ICAR’ 03 8
Langage OMG IDL n Types de données u Elémentaires : octet, booléen, entiers, flottants, caractères, chaînes u Construits : typedef, énumération, structure, union, séquence, tableau u Polymorphes : Any et Type. Code u Passage par valeur n Exceptions u Composées de champs publiques (~structures) n Interfaces u Opérations + attributs u Héritage multiple u Passage par référence n Types valeurs u ~ interface + structure u Héritage simple u Passage par valeur n Standard ISO 14750 © 2003, P. Merle ICAR’ 03 9
Projections OMG IDL n Règles de traduction des constructions OMG IDL en constructions d’un langage cible, standardisées pour u ADA u C++ u COBOL u CORBA Scripting Language (IDLscript) u Java OMG IDL u Lisp u PL/1 u Python u Small. Talk u XML DTD/Schema Value types n Non standardisées mais existantes pour Eiffel, TCL, … © 2003, P. Merle ICAR’ 03 10
Quelques implantations de CORBA n Commerciales u IONA ORBacus et Orbix pour C++ et Java u Borland Visi. Broker pour C++ et Java u SUN Java Development Kit u Plates-formes J 2 EE v BEA Web. Logic Enterprise v IBM Web. Sphere u Navigateur Netscape u … n Open source u Red Hat ORBit pour C u MICO pour C++ u AT&T omni. ORB pour C++ u TAO pour C++ u Open. ORB pour Java u Jac. ORB pour Java u Jonathan pour Java u … © 2003, P. Merle ICAR’ 03 11
Principaux défauts de CORBA 2. x n Non trivial à mettre en œuvre u Connaître règles de projections OMG IDL vers langages de programmation n Pas de vision des architectures logicielles u Liaisons entre objets CORBA cachées dans le code u Rarement configurables de l’extérieur, i. e. par architectes u Aucun moyen pour raisonner sur des compositions d’objets CORBA n Pas de séparation des aspects fonctionnels / non fonctionnels u Programmation explicite des aspects non fonctionnels dans code applicatif, e. g. v POA, cycle de vie, (dé)activation, nommage, courtage, notification, persistance, transactions, sécurité, temps réel, tolérances aux pannes, etc. u Complexité accrue pour les experts métiers n Pas de standard pour conditionnement et déploiement u Uniquement des solutions ad hoc © 2003, P. Merle ICAR’ 03 12
Solutions apportées par le modèle de composants CORBA n Vision des architectures logicielles u Description explicite des liaisons entre composants CORBA v Liaisons entre types décrites via des ports en OMG IDL v Liaisons entre instances décrites via descripteurs XML d’assemblage n Meilleur séparation des aspects fonctionnels / non fonctionnels u Dichotomie composant / conteneur v Composant contient code métier v Conteneur contient code technique u Politiques techniques décrites en XML plutôt que programmées en dur n Standard pour le conditionnement, assemblage et déploiement u Formats d’archives et de descripteurs XML u API de contrôle du déploiement en réparti n Mais toujours pas trivial à mettre en œuvre ; -( u OMG IDL composant OMG IDL objet langages de programmation © 2003, P. Merle ICAR’ 03 13
Introduction au modèle de composants CORBA © 2003, P. Merle ICAR’ 03 14
Le modèle de composants CORBA n Un modèle de composants répartis u Multi-langages, multi-OSs, multi-ORBs, multi-fournisseurs, etc. v Vs le modèle EJB centré sur le langage Java v Vs le canevas. NET centré sur le fournisseur Microsoft u Un langage de définition des composants et de leurs ports d’interaction v Des composants clients (IHM) aux composants serveurs (métiers) u Une technologie XML de conditionnement et d’assemblage de composants u Une infrastructure de déploiement réparti u Un canevas de conteneurs gérant les politiques de v Cycle de vie, d’activation, de sécurité, de transactions, de persistance et de communication asynchrone u Interopérabilité avec les Enterprise Java Beans (EJB 1. 1) u Méta modèle MOF pour l’ingénierie dirigée par les modèles (MDE / MDA) © 2003, P. Merle ICAR’ 03 15
Similarités avec EJB, COM et. NET n Comme SUN Microsystems’s Enterprise Java Beans (EJB) u Composants CORBA créés et gérés par des maisons (homes) u S’exécutant dans des conteneurs prenant en charge les services systèmes u Hébergés par des serveurs d’applications n Comme Microsoft’s Component Object Model (COM) u Composants CORBA ont plusieurs interfaces offertes et requises v Accessibles par appel de méthodes ou par notification d’événements u Navigation et introspection des interfaces n Comme Microsoft’s. NET Framework u Support de différents langages de programmation u Technologie de conditionnement pour déploiement © 2003, P. Merle ICAR’ 03 16
Différences avec EJB, COM et. NET n CCM réunit simultanément les “bonnes” fonctionnalités des EJB, de COM et de. NET u +++ ouvert +++ hétérogénéité +++ portabilité +++ interopérabilité +++ n CCM fournit un cadre global pour la construction d’applications à base de composants distribués u Spécification, implantation, conditionnement, assemblage, déploiement et exécution des composants n Répartition des assemblages de composants CORBA u Peuvent être déployés et s’exécutés sur différentes machines n Segmentation de l’implantation des composants u Plusieurs classes au lieu d’une seule u Un état persistant par segment possible © 2003, P. Merle ICAR’ 03 17
Une application CCM C 5 C 6 C 7 C 3 Réseau Internet C 1 C 2 C 4 C 9 C 8 © 2003, P. Merle ICAR’ 03 18
Un composant CORBA et ses ports Interface du composant OFFERTS Réceptacles Composant Métier Puits d’ événements REQUIS Facettes Sources d’événements Attributs © 2003, P. Merle ICAR’ 03 19
Conteneur et implantation d’un composant CORBA Business Component Conteneur du Composant Business Implantation Implementation Métier n Par interposition, le conteneur gère u Le cycle de vie, i. e. Service, Session, Process, Entity u Les ports, l’activation, la persistance, les transactions, la sécurité, les communications © 2003, P. Merle ICAR’ 03 20
Implantation segmentée d’un composant CORBA Conteneur du Composant Business Component Implantation Métier Segment principal Business Segment 2 Implementation Segment 3 Segment 4 n Implantation de plusieurs ports offerts ayant la même interface u Impossible si le composant est implanté par une unique classe u Equivalent aux “component parts ” dans UML 2. 0 © 2003, P. Merle ICAR’ 03 21
Segmentation de la persistance d’un composant CORBA Conteneur du Composant Business Component Implantation Métier Segment principal Business Segment 2 Implementation Segment 3 Segment 4 n Contrôle fin de la persistance métier u Chaque segment peut avoir son propre état persistant stocké sur un support de données distinct © 2003, P. Merle ICAR’ 03 22
CCM : un cadre global pour la construction d’applications n Spécification des composants u Via OMG Interface Definition Language (OMG IDL) v Description des composants, de leurs ports et des maisons n Implantation des composants u Via OMG Component Implementation Definition Language (OMG CIDL) v Description du cycle de vie, de la persistance et de la segmentation des composants u Via Component Implementation Framework (CIF) v Règles de programmation à respecter v Interfaces conteneur composant & composant conteneur n Conditionnement des composants u Via archives ZIP incluant descripteurs XML + code binaire n Assemblage des composants u Via le XML Component Assembly Descriptor (CAD) et des archives ZIP n Déploiement des composants u Via une infrastructure répartie d’interprétation descripteurs XML n Exécution des composants u Via des conteneurs hébergés par des serveurs d’applications © 2003, P. Merle ICAR’ 03 23
Les langages de définition du CCM n OMG IDL 2. x u Modèle orienté objet u i. e. types de données, exceptions, interfaces et types valeurs OMG IDL 2. x étend n OMG IDL 3. 0 u Modèle orienté composant u i. e. types de composants, maisons et événements n OMG PSDL u Définition d’états persistents u i. e. types et maisons [abstraites] de stockage n OMG CIDL u Description de l’implantation de composants u i. e. compositions et segments © 2003, P. Merle ICAR’ 03 OMG PSDL OMG IDL 3. 0 étend OMG CIDL 24
De la conception au conditionnement des composants CORBA Concepteur Composant OMG IDL, PSDL & CIDL Local server-side OMG IDL Implante Compilateur OMG IDL PSDL & CIDL Implantation Exécuteur Composant Développeur Composant Compilateur Langage Programmation Stubs et Skeletons Client-side OMG IDL référence XML Component Descriptor Composant Binaire Conditionneur Composant Utilisateur Composant © 2003, P. Merle décrit ICAR’ 03 25
Conception, développement, conditionnement et assemblage concepteur développeur IDL/CIDL File User's Code IDL/CIDL Programming Language Tools Home Properties Component Properties Default Properties Compiler CORBA Component Stubs, Skeletons Implementation Package Packaging Tool Component Descriptor User written file Compiler Generated files © 2003, P. Merle CORBA Component Package conditionneur Assembly Tool Component Assembly Package assembleur Assembly Descriptor softpkg Descriptor ICAR’ 03 26
Le déploiement d’assemblages CCM Deployed Application déployée Archive ZIP Component Déployeur Archive ZIP Component Archive ZIP Assembly © 2003, P. Merle Outil IHM de déploiement Infrastructure répartie de déploiement ORB ICAR’ 03 27
Le déploiement d’une application CCM Réseau Internet © 2003, P. Merle ICAR’ 03 28
Le déploiement d’une application CCM C 5 C 6 C 7 C 3 Réseau Internet C 1 C 2 C 4 C 9 C 8 © 2003, P. Merle ICAR’ 03 29
Conteneurs CORBA, ORB et services Conteneur EJB EJB POA 1 Conteneur CCM CC CC Conteneur CCM CC POA 2 CC CC POA 3 Object Request Broker (ORB) Notification Service © 2003, P. Merle Transaction Service Security Service ICAR’ 03 Persistence Service 30
La spécification CORBA Components n Le modèle de composants CORBA n Component Implementation Definition Language (CIDL) n Component Implementation Framework (CIF) n Component Container Programming Model n Interopérabilité avec EJB 1. 1 n Conditionnement et déploiement n Un méta modèle MOF pour OMG IDL et CIDL => Spécification OMG disponible ~ 500 pages © 2003, P. Merle ICAR’ 03 31
Le modèle abstrait de composants CORBA © 2003, P. Merle ICAR’ 03 32
Le modèle abstrait de composants CORBA n Permet de capturer les fonctionnalités externes des composants CORBA u Facettes = interfaces offertes u Réceptacles = interfaces requises u Puits = événements consommés u Sources = événements produits u Attributs = propriétés configurables u Opérations des maisons / gestionnaires de composants n Exprimé via le langage OMG IDL 3. 0 u Nouvelles constructions syntaxiques masquant des canevas de conception u Traduites vers des interfaces OMG IDL compatibles CORBA 2. x © 2003, P. Merle ICAR’ 03 33
Un composant CORBA Interface du composant OFFERTS Réceptacles Composant CORBA Puits d’ événements REQUIS Facettes Sources d’événements Attributs © 2003, P. Merle ICAR’ 03 34
Construire une application CCM = Assembler des composants CORBA © 2003, P. Merle ICAR’ 03 35
Types et instances de composants CORBA n Un type de composants u Nouveau méta-type et mot-clé OMG IDL component u Identification de la liste des ports via nouveaux mots-clés v provides pour les facettes v [multiple] uses pour les réceptacles simples ou multiples v consumes pour les puits d’événements v emits / publishes pour les sources d’événements (1: 1 | 1: N) v [readonly] attribute pour les propriétés configurables u Héritage simple entre types de composants u Héritage multiple d’interfaces (mot-clé supports) n Une instance de composant u 1 référence distincte pour l’interface de base, chaque facette et chaque puits u API générique pour la connexion, navigation et introspection des ports u Créée et gérée par une unique instance de maison © 2003, P. Merle ICAR’ 03 36
Une maison de composants CORBA Interface maison Maison de Composants c 1 … c. N © 2003, P. Merle ICAR’ 03 37
Types et instances de maisons de composants CORBA n Un type de maisons u Nouveau méta-type et mot-clé OMG IDL home u Identification de l’unique type de composants gérés (mot-clé manages) v Plusieurs types de maisons pour le même type de composants possible u Identification du type de l’identité / clé persistante des composants v mot-clé primarykey ; pour composants Entity u Opérations factory et finder u N’importe quelle opération métier u Héritage simple entre types de maisons u Héritage multiple d’interfaces (mot-clé supports) n Une instance de maison u 1 référence pour l’interface de base u Instanciée lors du déploiement u Co localisation des instances de composants gérés © 2003, P. Merle ICAR’ 03 38
L’exemple du dîner des philosophes Thinking Hungry Starving Eating Dead Fork Thinking Hungry Starving Eating Dead Descartes Kant Fork Aristotle © 2003, P. Merle ICAR’ 03 Thinking Hungry Starving Eating Dead 39
Les composants CORBA du dîner des philosophes Component Philosopher Base ref. Facet Fork Receptacle name = Kant Event Sink Fork Philosopher Event Source Fork name = Descartes Philosopher name = Aristotle © 2003, P. Merle Observer ICAR’ 03 40
Le composant Fork. Manager exception In. Use {}; interface Fork { void get() raises (In. Use); void release(); }; Fork Manager // The fork component Fork. Manager { // The fork facet used by philosophers. provides Fork the_fork; }; // Home for instantiating Fork. Manager components. home Fork. Home manages Fork. Manager {}; © 2003, P. Merle ICAR’ 03 41
Le composant Fork. Manager exception In. Use {}; interface Fork { void get() raises (In. Use); void release(); }; Fork Manager // The fork component Fork. Manager { // The fork facet used by philosophers. provides Fork the_fork; }; // Home for instantiating Fork. Manager components. home Fork. Home manages Fork. Manager {}; © 2003, P. Merle ICAR’ 03 42
Le composant Fork. Manager exception In. Use {}; interface Fork { void get() raises (In. Use); void release(); }; Fork Manager // The fork component Fork. Manager { // The fork facet used by philosophers. provides Fork the_fork; }; // Home for instantiating Fork. Manager components. home Fork. Home manages Fork. Manager {}; © 2003, P. Merle ICAR’ 03 43
La maison pour Fork. Manager Fork. Home exception In. Use {}; interface Fork { void get() raises (In. Use); void release(); }; Fork Manager // The fork component Fork. Manager { // The fork facet used by philosophers. provides Fork the_fork; }; // Home for instantiating Fork. Manager components. home Fork. Home manages Fork. Manager {}; © 2003, P. Merle ICAR’ 03 44
Le composant Philosopher enum Philosopher. State { EATING, THINKING, HUNGRY, STARVING, DEAD }; eventtype { public public }; © 2003, P. Merle Philosopher name = XXX Status. Info string name; Philosopher. State state; unsigned long ticks_since_last_meal; boolean has_left_fork; boolean has_right_fork; ICAR’ 03 45
Le composant Philosopher component Philosopher { attribute string name; Philosopher // The left fork receptacle. uses Fork left; name = XXX // The right fork receptacle. uses Fork right; // The status info event source. publishes Status. Info info; }; home Philosopher. Home manages Philosopher { factory new(in string name); }; © 2003, P. Merle ICAR’ 03 46
Le composant Philosopher component Philosopher { attribute string name; Philosopher // The left fork receptacle. uses Fork left; name = XXX // The right fork receptacle. uses Fork right; // The status info event source. publishes Status. Info info; }; home Philosopher. Home manages Philosopher { factory new(in string name); }; © 2003, P. Merle ICAR’ 03 47
Le composant Philosopher component Philosopher { attribute string name; Philosopher // The left fork receptacle. uses Fork left; name = XXX // The right fork receptacle. uses Fork right; // The status info event source. publishes Status. Info info; }; home Philosopher. Home manages Philosopher { factory new(in string name); }; © 2003, P. Merle ICAR’ 03 48
Le composant Philosopher component Philosopher { attribute string name; Philosopher // The left fork receptacle. uses Fork left; name = XXX // The right fork receptacle. uses Fork right; // The status info event source. publishes Status. Info info; }; home Philosopher. Home manages Philosopher { factory new(in string name); }; © 2003, P. Merle ICAR’ 03 49
La maison de Philosopher. Home component Philosopher { attribute string name; Philosopher // The left fork receptacle. uses Fork left; name = XXX // The right fork receptacle. uses Fork right; // The status info event source. publishes Status. Info info; }; home Philosopher. Home manages Philosopher { factory new(in string name); }; © 2003, P. Merle ICAR’ 03 50
Le composant Observer component Observer { // The status info sink port. consumes Status. Info info; }; // Home for instantiating observers. home Observer. Home manages Observer {}; © 2003, P. Merle ICAR’ 03 51
Le composant Observer component Observer { // The status info sink port. consumes Status. Info info; }; // Home for instantiating observers. home Observer. Home manages Observer {}; © 2003, P. Merle ICAR’ 03 52
Le maison d’Observer Home Observer component Observer { // The status info sink port. consumes Status. Info info; }; // Home for instantiating observers. home Observer. Home manages Observer {}; © 2003, P. Merle ICAR’ 03 53
La compilation OMG IDL 3. 0 Concepteur Composant Application Cliente Développeur Composant OMG IDL 3. 0 Client Composant Exécuteur Composant utilise implanté par Code utilisateur Compileur Code généré © 2003, P. Merle Local server-side OMG IDL 2. x Compilateur OMG IDL 3. 0 Client-side OMG IDL 2. x Implanté par Délègue vers Souche Cliente ORB ICAR’ 03 Squelette Composant 54
Projection cliente pour le composant Philosopher component Philosopher { attribute string name; uses Fork left; uses Fork right; publishes Status. Info info; }; Philosopher name = XXX Traduit en interface Philosopher : : : Components: : CCMObject { attribute string name; . . . /. . . © 2003, P. Merle ICAR’ 03 55
Projection cliente pour le composant Philosopher name = XXX void connect_left(in Fork cnx) raises(…); Fork disconnect_left() raises(…); Fork get_connection_left(); void connect_right(in Fork cnx) raises (…); Fork disconnect_right() raises (…); Fork get_connection_right(); Components: : Cookie subscribe_info( in Status. Info. Consumer consumer) raises(…); Status. Info. Consumer unsubscribe_info( in Components: : Cookie ck) raises(…); }; © 2003, P. Merle ICAR’ 03 56
Component Implementation Framework (CIF) n Définit le modèle de programmation de l’implantation des composants u Concepts de composition, de segment et d’exécuteur u Projection composant OMG IDL en interfaces locales OMG IDL u Interfaces OMG IDL des conteneurs v Session. Context et Entity. Context, … u Interfaces OMG IDL des exécuteurs de composant v Session. Component et Entity. Component, … u Component Implementation Description Language (CIDL) © 2003, P. Merle ICAR’ 03 57
Component Implementation Definition Language (CIDL) n Description de la structure d’implantation des composants u Composition d’une implantation de maison et d’une implantation de composant u Segmentation de l’implantation des composants u Association d’un état persistant à chaque segment n OMG Persistent State Definition Language (OMG PSS) u Description des états persistants n Génération de squelettes prenant en charge u Les ports des composants u Le cycle de vie des composants u La segmentation de l’implantation u La liaison avec les états persistants u L’implantation par défaut des opérations de retour v ccm_activate, ccm_load, ccm_store, ccm_passivate © 2003, P. Merle ICAR’ 03 58
Composition CIDL pour le composant Fork. Manager import Dining. Philosophers; composition session Fork. Manager. Composition { home executor Fork. Home. Session. Impl { implements Dining. Philosophers: : Fork. Home; manages Fork. Manager. Session. Impl { segment Seg { provides facet the_fork; } }; }; }; © 2003, P. Merle ICAR’ 03 59
La compilation CIDL OMG IDL 3. 0 Exécuteur Composant OMG CIDL Local Server-Side Mapping Compilés vers © 2003, P. Merle Squelettes gérant ports, cycle de vie, segmentation, persistance, GIOP/IIOP ICAR’ 03 60
Le conditionnement, l’assemblage et le déploiement CCM © 2003, P. Merle ICAR’ 03 61
Conditionnement, assemblage et déploiement via le CCM n CORBA 2. x : aucun moyen standard pour configurer, conditionner, diffuser et déployer des applications réparties n CCM fournit une technologie de conditionnement, d’assemblage et de déploiement d’applications à base de composants hétérogènes et distribués u Composants et assemblages conditionnés dans des archives ZIP u Auto-description via divers descripteurs XML u API de l’infrastructure de déploiement répartie u Déploiement totalement automatisé © 2003, P. Merle ICAR’ 03 62
Archive de composant n Unité de conditionnement réutilisable dans des assemblages u Auto descriptive et auto suffisante n Fichier ZIP contenant u Un Software Package Descriptor (. csd) décrivant le contenu de l’archive u Le fichier OMG IDL du composant, des interfaces des ports et de la maison u Des Property File Descriptor (. cpf) v Les valeurs par défauts des attributs u Une ou plusieurs implantations binaires v E. g. pour différents OSs, ORBs, processeurs, Qo. S, . . . u Des CORBA Component Descriptor (. ccd) v Configuration des politiques techniques gérées par les conteneurs © 2003, P. Merle ICAR’ 03 63
Artefacts de conditionnement des composants © 2003, P. Merle ICAR’ 03 64
Conditionnement de composants IDL User Code Compiler Generated Code IDL/CIDL Compiler Shared Library or Executable Component Descriptor CIDL © 2003, P. Merle Default Configuration ICAR’ 03 Packaging Tool Component Package. zip 65
Archive d’assemblage n Unité de conditionnement réutilisable pour le déploiement automatique d’applications réparties u Auto descriptive et auto suffisante n Fichier ZIP contenant u Un Component Assembly Descriptor (. cad) v Le placement des maisons à créer v Les instances de composants à créer v Les connexions entre les ports u Des Property File Descriptors (. cpf) v Les valeurs initiales des attributs u Une ou plusieurs archives de composants v Soit inclusion du contenu des archives v Soit inclusion des archives v Soit références URL vers des archives externes © 2003, P. Merle ICAR’ 03 66
Artefacts d’assemblage des composants © 2003, P. Merle ICAR’ 03 67
Assemblage de composants Component Package Instance Creation Port Connections Assembly Tool Configuration Values Assembly Archive. aar (ZIP) Deployment. T ool . . . © 2003, P. Merle ICAR’ 03 68
L’outil d’assemblage de Mico. CCM © 2003, P. Merle ICAR’ 03 69
Les descripteurs XML du CCM n Software Package Descriptor (. csd) u Description du contenu d’une archive de composant logiciel u Identification d’une ou plusieurs implantations binaires n CORBA Component Descriptor (. ccd) u Informations techniques générées depuis définitions CIDL u Paramétrage des politiques gérées par les conteneurs n Component Property File Descriptor (. cpf) u Configuration des attributs des maisons et des composants n Component Assembly Descriptor (. cad) u Identification des archives de composants utilisées u Description d’un assemblage de composants © 2003, P. Merle ICAR’ 03 70
Software Package Descriptor (. csd) n Informations générales u Titre, description, auteurs, compagnies, liens Web, licences n Lien sur le descripteur XML de propriétés par défaut (. cpf) n Lien sur le fichier OMG IDL du composant n Pour chaque implantation u Informations techniques v Systèmes d’exploitation, processeurs, langages, compilateurs et ORBs supportés v Dépendances vers des bibliothèques externes v Pré requis de déploiement u Lien sur descripteurs. cpf et. ccd spécifiques u Lien sur le fichier d’implantation v Bibliothèque partagée, classe ou archive Java, exécutable, … u Point d’entrée de l’implantation de la maison, i. e. fonction statique © 2003, P. Merle ICAR’ 03 71
Exemple de Software Package Descriptor xml version='1. 0'? >
CORBA Component Descriptor (. ccd) n Informations techniques générées depuis CIDL u Fonctionnalités des types de composants et de maisons u Ports et interfaces supportées u Catégorie du composant et segments n Politiques du conteneur à compléter u u u u Threading Cycle de vie des servants POA Transactions Sécurité Events Persistance Politiques POA étendues n Lien vers fichiers de propriétés pour la maison et ses instances de composants © 2003, P. Merle ICAR’ 03 78
Exemple de CORBA Component Descriptor
CORBA Component Descriptor pour Composant Philosopher
Property File Descriptor (. cpf) n Permet de fixer les propriétés des instances de maisons et de composants n Contient un couple (nom, valeur) pour chaque attribut à configurer n Descripteurs référencés depuis u Software Package Descriptors v valeurs par défaut des attributs des composants u CORBA Component Descriptors v valeurs par défaut des attributs des composants et/ou des maisons u Component Assembly Descriptors v Valeurs initiales des instances de maisons et de composants © 2003, P. Merle ICAR’ 03 83
Property File pour Philosopher Kant xml version="1. 0"? >
Les fichiers XML de propriétés CCM © 2003, P. Merle ICAR’ 03 85
Component Assembly Descriptor (. cad) n Implantations de composants à utiliser u Références vers 1 ou plusieurs Component Software Descriptors n Instances de maisons à créer u Placement, co-localisation et cardinalité n Instances de composants à créer n Connexions entre les instances de composants u Réceptacles facettes et sources puits n Valeurs initiales des attributs des maisons et composants n Enregistrement des maisons et des composants u Services de Nommage, Courtage et Component. Home. Finder © 2003, P. Merle ICAR’ 03 86
Exemple du dîner des philosophes Component Philosopher Base ref. Facet Fork Receptacle name = Kant Event Sink Fork Philosopher Event Source Fork name = Descartes Philosopher name = Aristotle © 2003, P. Merle Observer ICAR’ 03 87
Component Assembly Descriptor pour Dîner des Philosophes xml version="1. 0"? >
Component Assembly Descriptor pour Dîner des Philosophes
Component Assembly Descriptor pour Dîner des Philosopher
Référencement entre les descripteurs XML du CCM Component Assembly Descriptor * Software Package Descriptor CORBA * Component Descriptor * * Component Property File Descriptor * © 2003, P. Merle ICAR’ 03 94
Le déploiement d’assemblages CCM Deployed Application déployée Archive ZIP Component Déployeur Archive ZIP Component Archive ZIP Assembly © 2003, P. Merle Outil IHM de déploiement Infrastructure répartie de déploiement ORB ICAR’ 03 95
Le déploiement CCM n Déploiement automatique et réparti d’assemblages de composants CORBA u Installation du code binaire des composants sur leur site d’exécution v Demande aux sites de télécharger le code accessible via Internet u Démarrage des serveurs d’applications nécessaires sur chaque site d’exécution u Création des conteneurs dans chaque serveur démarré u Installation des maisons dans les conteneurs v Chargement du code maison / composant en mémoire u Instanciation des composants à partir des maisons u Configuration des attributs des instances de composants u Interconnexion des composants via leurs ports u Démarrage effectif de tous les composants © 2003, P. Merle ICAR’ 03 96
Interfaces de l’infrastructure de déploiement n Component. Installation u Installation des implantations binaires de composants u 1 instance par machine n Assembly. Factory u Fabrique des objets Assembly u 1 instance par domaine, e. g. un réseau, un ensemble de machines, … n Assembly u Contrôleur du déploiement d’un assemblage u Interpréteur des Component Assembly Descriptor (CAD) n Server. Activator u Fabrique d’objets Component. Server u Une instance par machine n Component. Server u Fabrique d’objets Container n Container u Installation et instanciation des maisons de composants © 2003, P. Merle ICAR’ 03 97
Le processus de déploiement du CCM Assembly. Factory «instantiates» Assembly Domaine Server. Activator «instantiates» Deployment Tool Component. Server «instantiates» Container «instantiates» CCMHome «instantiates» Component. Installation Machine © 2003, P. Merle Processus ICAR’ 03 CCMObject 98
Scénario de déploiement Deployment Tool Déployeur Component Assembly Descriptor + with assignment information © 2003, P. Merle ICAR’ 03 99
Scénario de déploiement : chargement des implantations Deployment Tool Component. Installation Code for Component A © 2003, P. Merle Component Assembly Descriptor + ICAR’ 03 Code for Component B 100
Scénario de déploiement : création de l’objet Assembly Deployment Tool Assembly. Factory Code for Component A © 2003, P. Merle Assembly ICAR’ 03 Code for Component B 101
Scénario de déploiement : instanciation des serveurs de composants Component Assembly Descriptor + Component. Server. Activator Component. Server Assembly Code for Component A © 2003, P. Merle Server. Activator Code for Component B ICAR’ 03 102
Scénario de déploiement : instanciation des conteneurs Component Assembly Descriptor + Component. Server Container Component. Server Assembly Code for Component A © 2003, P. Merle Container Code for Component B ICAR’ 03 103
Scénario de déploiement : installation des maisons Component Assembly Descriptor + Home for A Container Home for B Assembly Code for Component A © 2003, P. Merle Container Code for Component B ICAR’ 03 104
Scénario de déploiement : instanciation des composants Component Assembly Descriptor + Home for A Home for B Assembly B instance A instance © 2003, P. Merle ICAR’ 03 105
Scénario de déploiement : configuration des composants Component Assembly Descriptor + Home for A Home for B Assembly A instance © 2003, P. Merle B instance ICAR’ 03 106
Le déploiement de l’application Dîner des Philosophes n Démarrer l’outil de déploiement u Utilise le Component. Installation de chaque site d’exécution pour télécharger les implantations binaires nécessaires u Utilise l’Assembly. Factory pour créer un Assembly u Invoque l’opération build() de l’instance Assembly v Création des serveurs de composants nécessaires v Création des conteneurs v Installation des maisons v Création des instances de composants v Interconnexion des ports des composants v Invocation configuration_complete() sur chaque composant n Déploiement totalement distribué et automatisé © 2003, P. Merle ICAR’ 03 107
Les conteneurs CORBA © 2003, P. Merle ICAR’ 03 108
Les conteneurs CCM n Un conteneur gère une catégorie de composants u entity : persistant, clé primaire et destruction explicite u process : persistant, pas de clé et destruction explicite u session : existe durant une session avec le client u service : existe durant une invocation u EJBsession, EJBentity : support pour EJBs u empty : autres politiques spécifiques n Encapsule un ou des Portable Object Adaptors u (Dé)activation automatique u Optimisation des ressources n Fournit des interfaces simplifiées pour les services CORBA u Sécurité, transactions et persistance n Utilise des appels retour pour la gestion des instances © 2003, P. Merle ICAR’ 03 109
L’architecture d’un serveur de conteneurs Container Manager Entity Container POA 1 Session Container EJB Container POA 2 POA 3 Other Container POA 4 ORB Transactions © 2003, P. Merle Security Persistence ICAR’ 03 Events 110
L’architecture d’un conteneur C l i e n t Home Extended OMG IDL external API CORBA Component Container POA Internal API Callback API ORB Transaction © 2003, P. Merle Security Persistency ICAR’ 03 Notification 111
Politiques gérées par les conteneurs n Décrites via CORBA Component Descriptors (. ccd) n Implantées par le conteneur, pas par le composant n Politiques définies pour : u Cycle de vie des servants u Transaction u Sécurité u Evénements u Persistance © 2003, P. Merle ICAR’ 03 112
Politiques de cycle de vie des servants n method – valide pour toutes les catégories u Activation avant chaque invocation u Passivation après chaque invocation n transaction – valide pour toutes sauf service u Activation avant la 1 ière invocation d’une nouvelle transaction u Passivation après la dernière invocation de la transaction n component – valide pour toutes sauf service u Activation avant la 1 ière invocation u Passivation explicite par le composant n container – valide pour toutes sauf service u Activation avant la 1 ière invocation u Passivation quand le conteneur requière de la mémoire © 2003, P. Merle ICAR’ 03 113
Politiques transactionnelles n Définies pour chaque opération si gérées par le conteneur u NOT_SUPPORTED u REQUIRED u SUPPORTS u REQUIRES_NEW u MANDATORY u NEVER n Gérées par le composant via l’API Components: : Transaction: : User. Transaction u Simplification de l’API Cos. Transactions (OMG OTS) © 2003, P. Merle ICAR’ 03 114
Politiques de sécurité n Définies pour chaque opération si gérées par le conteneur (élément security descripteurs de composants) u CLIENT_IDENTITY u SYSTEM_IDENTITY u SPECIFIED_IDENTITY (=userid) n Les conteneurs contrôlent à l’exécution l’identité de l’appelant et ses droits n Construit au dessus de CORBA Security V 2 © 2003, P. Merle ICAR’ 03 115
Politiques événementielles n Comportement transactionnelle de la notification des événements défini pour chaque source u non-transactional u default u transactional n Le conteneur peut utiliser le service de notification CORBA u Modèle push uniquement u Projection des eventtypes en Structured Events u Création des channels © 2003, P. Merle ICAR’ 03 116
Politiques de persistance n Uniquement pour composants Process et Entity n Self managed ou Container managed n Utilise le service de persistance CORBA (PSS) ou un mécanisme de persistance propriétaire © 2003, P. Merle ICAR’ 03 117
Conclusions © 2003, P. Merle ICAR’ 03 118
Le modèle de composants CORBA n 1 ier standard industriel pour les composants distribués u Ouvert, hétérogénéité, portabilité et interopérabilité u Un processus d’ingénierie de logiciel à base de composants u Un modèle abstrait de composants riche v Très proche du modèle de composants UML 2. 0 u Conditionnement, assemblage et déploiement réparti u Un canevas de conteneurs u Interopérabilité avec EJB u Méta modèles prêts pour l’approche Model Driven Architecture (MDA) n Au coeur de CORBA 3. 0 u Spécification libre ~ 500 pages n Mais peu d’intérêts de la part des fournisseurs CORBA u Ils surfent sur la vague des Web Services © 2003, P. Merle ICAR’ 03 119
Implantations CCM n Open. CCM - Object. Web / INRIA & LIFL u Open source Java sur ORBacus 4. 1 & Open. ORB 1. x & BES 5. x u http: //openccm. objectweb. org/ n Mico. CCM - FPX & Alcatel u Open source C++ sur MICO u http: //www. fpx. de/Mico. CCM/ n Qedo - IST COACH u Fraunhofer FOKUS & Humboldt University u Open source C++ sur MICO & ORBacus 4. 1 (& TAO) u http: //qedo. berlios. de n EJCCM - CPI Inc. u Semi open source Java sur Open. ORB 1. x u http: //www. ejccm. org n K 2 - ICMP u Produit commercial C++ sur divers ORBs u http: //www. icmgworld. com n Quelques autres implantations moins connues © 2003, P. Merle ICAR’ 03 120
Activités OMG autour du CCM n Components 1. 2 Revision Task Force (RTF) u Révision de la spécification CORBA Components n Deployment and Configuration FTF u Modèle de conditionnement, d’assemblage et de déploiement plus sophistiqué u OMG TC Document ptc/03 -07_02 & 08 n Soumission Fraunhofer FOKUS/IK++ pour MOF 2. 0 IDL RFP u Référentiels MOF construits en composants CORBA u RFP = OMG TC Document ad/01 -11 -07 u Subm. = OMG TC Document ad/02 -12 -05 n UML Profile for CORBA Components RFP u Extension du profil UML/CORBA pour composants CORBA u RFP = OMG TC Document ab/02 -10 -01 u Subm. = OMG TC Document mars/03 -05 -09 n Lightweight CCM RFP u Simplication du CCM pour systèmes embarqués u RFP = OMG TC Document realtime/02 -11 -27 u Subm. = OMG TC Document realtime/03 -05 -05 n Streams for CORBA Components RFP u Nouveaux types de ports pour communication par flux u RFP = OMG TC Document mars/03 -06 -11 n Qo. S for CORBA Components RFP u Prise en compte de qualités de services dans le CCM u RFP = OMG TC Document mars/03 -06 -12 © 2003, P. Merle ICAR’ 03 121
Références sur le modèle de composants CORBA n CORBA 3 Fundamentals and Programming u Dr. John Siegel, publié chez John Wiley and Sons n CORBA/IIOP Specification version 3. 0. 2 u OMG TC Document formal/2002 -12 -06 n CORBA Components Specification u OMG TC Document formal/2002 -06 -65 & ptc/2002 -08 -03 n CORBA Component Model Tutorial u OMG TC Document ccm/2002 -06 -01 n “The CCM Page”, Diego Sevilla Ruiz u http: //www. ditec. um. es/~dsevilla/ccm/ n IST COACH Project u http: //www. ist-coach. org © 2003, P. Merle ICAR’ 03 122
Pas d’intergiciel universel pour composants ! OMG MDA ? Enjeu majeur ! CORBA © 2003, P. Merle EJB . NET ICAR’ 03 . . . 123
Merci © 2003, P. Merle ICAR’ 03 124