Corba Component Model CCM SAMAHA Antoine UJFISTGRICM 3
Corba Component Model (CCM) SAMAHA Antoine UJF/ISTG/RICM 3 ccm(Corba Component Model) Année http: //www-istg. ujf-grenoble. fr/ Universitaire 2001 -2002
27/10/2020 2 Sommaire n Motivations Limites de la programmation OO Les composants Corba Component Model (CCM) n • Introduction • Composants CORBA • Modèle abstrait • Implémentation des composants • Les conteneurs • Création de lot, assemblage et déploiement • Vue générale Conclusion n n ccm(Corba Component Model) n
27/10/2020 3 Motivations n Motivation pour la programmation orientée composant • Construction d’applications par assemblage d’entités existantes ( = composants ) • Formalisme pour décrire les interactions entre composants ccm(Corba Component Model) • Formalisme pour décrire le déploiement des composants n • Outils de développement, Outils de déploiement, Outils d’administration. Les limites de la programmation par objets
27/10/2020 4 Limites de la programmation OO(1/2) n n ccm(Corba Component Model) n Beaucoup de tâches doivent être gérées manuellement • Définition des instances • Gestion des dépendances entre classes/modules Structure des applications peu lisible (=un ensemble de fichiers ) Absence de vision globale de l’application • Les principaux concepts sont définis au niveau d’un objet individuel • Pas de notion de description globale de l’architecture
27/10/2020 5 Limites de la programmation OO(2/2) nÉvolutions/modifications difficiles • Changement de mode de communication • Évolution, ajout, suppression de fonctionnalités • Modification du placement des objets n. Absence de services ccm(Corba Component Model) • Les services nécessaires doivent être réalisées « à la main » (persistance, sécurité, tolérances aux fautes. . ) n. Déploiement ( installation ) • Peu ou pas d’outils pour installer les exécutables sur les différentes sites
27/10/2020 6 Les composants(1/4) n Programmation orientée composant • Égale programmation par assemblage plutôt que par développement (cas de la programmation OO) ccm(Corba Component Model) • Focaliser l’expertise sur les problèmes du domaine à informatiser plutôt que sur des compétences «techniques» informatiques
27/10/2020 7 Les composants(2/4) n. Définition d'un composant • Égale module logiciel • Qui exporte différents attributs, propriétés et méthodes • Qui est prévu pour être configuré • Qui est prévu pour être installé ccm(Corba Component Model) • Qui fournit un mécanisme lui permettant de «s'autodécrire» • Composant = objet + configurateur + installateur • Objectif : avoir des briques de bases réutilisables
27/10/2020 8 Les composants(3/4) n. Caractérisation d'un composant Propriétés configurables • Il fournit des services • Il utilise d'autres composants • Il possède des propriétés configurables services fournis composant utilisation de composants contraintes d’environnement ccm(Corba Component Model) • Il spécifie quelles doivent être les caractéristiques de l'environnement pour qu'il puisse être installé correctement • En terme de système (OS, librairies, . . . ) • En terme de services (transaction, sécurité, persistance, . . . )
27/10/2020 9 Les composants(4/4) n. Environnement d'exécution d'un composant n. Conteneur Structure d’accueil • Encapsulation d'un composant conteneur • Prise en charge (masquage) des services systèmes composant • Prise en charge des connexions entre composants client composant ccm(Corba Component Model) • Invocations et événements n. Structure d'accueil • Espace d'exécution Système/middleware • Médiateur entre les conteneurs et le système/middleware
27/10/2020 10 CCM - Introduction(1/2) n n n ccm(Corba Component Model) n Un modèle de composant compatible avec les EJB Un modèle qui permet de décrire le déploiement, la configuration et la composition. Un modèle de composant applique la composition au lieu de l’héritage Indépendance de la plate-forme et du langage de programmation Inclusion de la gestion des événements Notion d’interface exportées et requises
27/10/2020 11 CCM - Introduction(2/2) n ccm(Corba Component Model) n Deux types de composants • Les composants basiques (similaires à EJB) • Les composants étendus Spécification des composants • Modèle abstrait des composants • Modèle d’implantation des composants • Modèle de programmation des conteneurs • Architecture des conteneurs des composants • Création des lot, assemblage et déploiement • Interfonctionnement avec EJB 1. 1
27/10/2020 12 CCM - Composants CORBA (1/4) ccm(Corba Component Model) n. Un composant CCM possède • 1 ou plusieurs interfaces (appelées port) • Une fabrique (appelée home) • 3 types de ports (facette, réceptacle, événement) • Les attributs : valeurs nommées, permettre la configuration d’un composant • Un composant possède une référence de base (≡IOR pour un objet CORBA ) • Accès à un composant via la référence de base • Interface de navigation • Tous les composants héritent du composant de base Component. Base ( ≡ CORBA: : Object pour les objets ) • Les composants se déclarent en IDL 3 (extension de l’IDL de base) • Traducteur IDL 3 → IDL
27/10/2020 13 CCM - Composants CORBA (2/4) n Architecture générale d’un composant CORBA Référence de base Un composant corba facettes ccm(Corba Component Model) implantations réceptacle Puits d’événements Source d’événements attributs
27/10/2020 14 CCM - Composants CORBA (3/4) n Facette ccm(Corba Component Model) Facette = interface fournit par un composant CORBA • Facette fournit un point de vue sur un composant • Chaque composant exporte une ou plusieurs interfaces IDL • Permet à plusieurs clients d’avoir des points de vue sur un même composant • Différence fondamentale avec les objets qui, eux, ne comportent qu’une interface IDL • Chaque facette possède une référence et correspond à une interface IDL n Réceptacle Réceptable = point de connexion entre composants • Permet de créer des liens entre composants • 2 types de connexion : simples ou multiples • Utilise des méthodes de connexion et de déconnexion dynamiques
27/10/2020 15 CCM - Composants CORBA (4/4) n Evénement Ports de réception/émission d’événements asynchrones • 2 types de producteurs : 1 -1 et 1 -n • 2 types de ports : producteur/consommateur ( ou source/puits ) • Les clients s’abonnent à des types d’événements • Modèle de communication de type push ccm(Corba Component Model) n Fabrique Gestionnaire du cycle de vie d’un type de composant • Gère les instances d’un composant • Offre des outils de recherche d’instances basés sur des clés
27/10/2020 16 CCM - Modèle abstrait (1/9) n. Adaptation entre l’IDL 3 étendu et l’IDL traditionnel ccm(Corba Component Model) • Les composants se déclarent en IDL 3 (extension de l’IDL de base) • L’IDL étendu reste compatible avec l’IDL traditionnel IDL étendu traditionnel compilation
27/10/2020 17 CCM - Modèle abstrait (2/9) n. Décrire un composant • En IDL étendu définit le nouveau mots clef component Component un_composant { // Description du composant }; • En IDL traditionnel (un composant devient une interface qui hérite de l’interface standard Components: : CCMObject) ccm(Corba Component Model) Interface un_composant : Components: : CCMObject { //Description du composant };
27/10/2020 18 CCM - Modèle abstrait (3/9) n. Décrire des facettes • Mots clef provides Component un_composant { Provides IA interface_a; Provides IB interface_b; }; • En IDL traditionnel ( provides devient une opérations qui renvoie la facette spécifiée) ccm(Corba Component Model) IA provides_interfaces_a(); (pour récupérer la référence) • L’opération Get_component permet de récupérer une référence vers le composant • Le composant offrira la référence d’une interface de navigation • opération qui renvoie l’ensemble des références divers facettes avec leurs noms respective
27/10/2020 19 CCM - Modèle abstrait (4/9) n Décrire des réceptacles • Mots clef uses ( permet de spécifier le nom d’interface qui pourra être connectée à ce composant) Component un_composant { uses IC entree_c; uses multiple ID entree_b; }; • Mots clef multiple (un composant peut manipuler plusieurs interfaces de ce types en même temps) ccm(Corba Component Model) • En IDL traditionnel Void connect_entree_c() raises (components: Already. Connected, Components: : Invalid. Connection); //connecter IC disconnect_entree_c() raises (components: : No. Connection); //déconnecter IC get_connection_entree_c(); // récupérer l’interface connectée
27/10/2020 20 CCM - Modèle abstrait (5/9) n Décrire des sources d’événements • Deux types événements: • Vers un ensemble de consommateurs d’événements « fournisseur » (publisher) • Vers un canal d’événements « émetteur » (emitter) • Deux mots clefs: publishes, emits Component un_composant ccm(Corba Component Model) { emits first. Event premier; Publishes secopnd. Event second }; Les clauses emits et publishes en IDL classique spécifier des opérations qui permettent à un consommateur ou à un canal d’événements, de souscrire et de stopper sa souscription à un type d’événements.
27/10/2020 21 CCM - Modèle abstrait (6/9) n. Décrire des puits d’événements • Mot clefs: consume Component un_composant { consumes third. Event troisième; }; n. Décrire des attributs • La description d’un attribut se fait comme en IDL standard ccm(Corba Component Model) • Extension: Readonly attribute float Solde raises(Permission. Incorrecte); Attribute String nom getraises(Nom. Pas. Defini) set raises(Nom. Incorrect); //types d’exceptions pour chaque type d’action (lecture et/ou écriture)
27/10/2020 22 CCM - Modèle abstrait (7/9) n. Décrire l’interface Home • Gère le composant: son cycle de vie, opérations de recherche n. Deux types d’interfaces Home: • Celles qui gèrent un composant sans clef primaire • Celles qui gèrent un composant avec clef primaire ccm(Corba Component Model) Remarque: Plusieurs interfaces Home peuvent être définies pour un même composants Une interface Home peut hériter d’une autre interface home
27/10/2020 23 CCM - Modèle abstrait (8/9) n. Celles qui gèrent un composant sans clef primaire home nom_de_la_home manages nom_de_composant { //corps de la home }; • L’équivalence d’une description de Home en IDL classique: • Interface de Home explicite (opérations décrits par l’utilisateurs) • Interface de Home implicite (opérations standard pour une Home) ccm(Corba Component Model) • Interface Home qui hérite des deux interfaces précédentes interface nom_de_la_home. Implicit : Components : : Keyless. CCMHome { nom_de_composant create(); // créer une nouvelle instance du composant };
27/10/2020 24 CCM - Modèle abstrait (9/9) n. Celles qui gèrent un composant avec clef primaire home nom_de_la_home manages nom_de_composant primary. Key type_de_la_clef { //corps de la home }; • L’équivalence d’une description de Home en IDL classique: • Identique à celui d’une Home sans clef primaire • En plus des modifications de l’interface implicite interface nom_de_la_home. Implicit { nom_de_composant create(); ccm(Corba Component Model) nom_de_composant find_by_ primary_Key(in type_de_la_clef Key) raises(components: : Unknown. Key. Value, Components: : Invalid. Key); Void remove(in type_de_la_clef Key) raises(components: : Unknown. Key. Value, Components: : Invalid. Key); type_de_la_clef get_ primary_Key(in nom_de_composant comp); };
27/10/2020 25 Implémentation des composants(1/5) n. CIDL (Component Implementation Definition Language) • Langage spécifique qui décrire l’implantation du composant • Simplifie la mise en œuvre de la persistance et des transactions du composant • Permet de spécifier une composition, qui permet la mise en place de relations entre les descriptions IDL et les exécuteurs (les entités qui implantent les interfaces décrites en IDL) • Deux types d’exécuteurs ccm(Corba Component Model) • Home Executor //Implantation de l’interface Home • Component Executor // Implantation du composant
27/10/2020 26 Implémentation des composants(2/5) n. En utilisant l’IDL et CIDL, des compilateurs spécifiques génèrent automatiquement le canevas d’implantation du composant Description IDL ccm(Corba Component Model) Description CIDL Compilation Canevas d’implantation du composant
27/10/2020 27 Implémentation des composants(3/5) n. Syntaxe de description d’une composition compositon catégorie_de_la_composition nom_de_la_composition { // Description des éléments de persistance facilite la mise en œuvre de la persistance du composant // Description de la Home Executor précise le nom des classes d’implantation de la Home et du composant ainsi que des informations de liaison aux procédures de persistance ccm(Corba Component Model) // Description des Home Proxy permet de définir des Home séparées des composants( distantes) };
27/10/2020 28 Implémentation des composants(4/5) n. Les quatre catégories de composition • Service : un composant de type service n’utilise pas de clef primaire, n’est pas persistant, et de plus est sans état • Session : ce composant n’utilise pas de clef primaire et n’est pas persistant • Process : ce composant est persistant mais n’utilise pas de clef primaire • Entity : ce composant est persistant et utilise une clef primaire ccm(Corba Component Model)
27/10/2020 29 Implémentation des composants(5/5) n. Les exemple utilisant une description de Home Executor composition session Exemple. Composition { home executor Home. Exemple. Impl { implements Home. Exemple; manages Exemple. Impl; }; ccm(Corba Component Model) L’exécuteur Home du composant sera implanté par la classe Home. Exemple. Impl Home : Home. Exemple gère Home Executor : Home. Exemple. Impl description IDL implante Home Executor : Home. Exemple. Impl gère Home Executor : Home. Exemple. Impl description CIDL
27/10/2020 30 Les conteneurs HOME C API externe L Composant I CORBA callback E N API interne T POA ccm(Corba Component Model) conteneur Le bus CORBA : ORB transactions sécurité persistance notification
27/10/2020 31 Création de lot, assemblage et déploiement n. Création de lots • Rassemble tous les constituants d’un composant • Le descripteur logiciel (software Package Descriptor) c’est un fichier XML portant l’extension. csd pour CORBA software Descriptor ccm(Corba Component Model) • Le descripteur de composant (CORBA Component descriptor) c’est un fichier XML portant l’extension. ccd pour CORBA Component Descriptor • Le descripteur de propriétés (Property File descriptor) c’est un fichier XML portant l’extension. cpf pour Component Property File
27/10/2020 32 Création de lot, assemblage et déploiement n. Assemblage • Le descripteur d’assemblage de composants (Component Assembly Descriptor) c’est un fichier XML qui énumère les caractéristiques de l’assemblage portant l’extension. cad ccm(Corba Component Model) n. Déploiement
ccm(Corba Component Model) 27/10/2020 Vue générale 33
27/10/2020 34 Conclusion n Séparation des fonctionnalités • Développement • Déploiement • Administration n Comparaison CCM vs EJB • Plus complet • Moins avancé ccm(Corba Component Model) • Plus complexe
- Slides: 34