Mod.le Composants CORBA
Transcript of Mod.le Composants CORBA
![Page 1: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/1.jpg)
1
ICAR’03
École d’été sur les Intergiciels etsur la Construction d’Applications Réparties
Le modèle de composants CORBA
Philippe MerleProjet Jacquard (INRIA et LIFL)
http://www.lifl.fr/~merle
![Page 2: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/2.jpg)
2
2© 2003, P. Merle ICAR’03
Plan
■ Quelques rappels sur CORBA◆ Objectifs, historique, principes de fonctionnement, principaux défauts
■ Introduction au modèle de composants CORBA◆ Points clés, comparaisons avec EJB, COM et .NET◆ Le cadre global de construction d’applications CCM
■ Le modèle abstrait de composants CORBA◆ Concepts et nouvelles constructions du langage OMG IDL 3.0
■ Le conditionnement, l’assemblage et le déploiement CORBA◆ Les archives de composant et d’assemblage◆ Le processus de déploiement et ses interfaces
■ Les conteneurs CORBA◆ Politiques de gestion des services
■ Conclusions◆ Implantations CCM et activités OMG en cours autour du CCM
![Page 3: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/3.jpg)
3
3© 2003, P. Merle ICAR’03
Quelques rappels sur CORBA
![Page 4: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/4.jpg)
4
4© 2003, P. Merle ICAR’03
CORBA
■ Spécification d’un modèle de composants logiciels répartis et des interfaces de l’intergiciel associé
◆ CORBA pour Common Object Request Broker Architecture
■ Fait parti d’un large ensemble de spécifications définies par leconsortium international Object Management Group (OMG)
◆ Object Management Architecture (OMA)❖ Des services communs
▲ Nommage, courtage, notification, transactions, persistance, sécurité, …
❖ Des interfaces orientées métiers / domaines▲ Air Traffic Control, Gene Expression, Software Radio, Workflow Management, …
◆ Model Driven Architecture (MDA) ❖ Des technologies d’ingénierie dirigée par les modèles
▲ Unifed Modeling Language (UML)▲ Meta Object Facilities (MOF)▲ XML Metadata Interchange (XMI)▲ …
![Page 5: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/5.jpg)
5
5© 2003, P. Merle ICAR’03
Objectifs de CORBA
■ Ouvert◆ Spécification indépendant des fournisseurs et des implantations
■ Hétérogénéité◆ Multi-langages, multi-OSs, multi-réseaux, multi-fournisseurs
◆ Via OMG Interface Definition Language (OMG IDL)
■ Portabilité◆ Code applicatif indépendant des implantations CORBA
◆ Projections standardisées OMG IDL vers langages de programmation
■ Interopérabilité◆ Protocole réseau commun entre implantations CORBA
❖ General Inter-ORB Protocol (GIOP)❖ Internet Inter-ORB Protocol (IIOP)
◆ Vers d’autres modèles comme OLE, COM et EJB
![Page 6: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/6.jpg)
6
6© 2003, P. Merle ICAR’03
Historique de CORBA
■ CORBA 1.0 (1991)◆ Modèle orienté objet, OMG IDL et interfaces de l’intergiciel
■ CORBA 2.0 (1995)◆ C++, interopérabilité GIOP/IIOP et COM◆ v2.1 (1997) : COBOL et ADA◆ v2.2 (1998) : Java et Portable Object Adaptor (POA)◆ v2.3 (1999) : révisions techniques◆ v2.4 (2000) : Asynch. Messaging, Minimum CORBA, RT CORBA◆ v2.5 (2001) : Intercepteurs portables, FT CORBA◆ v2.6 (2001) : Sécurité interopérable
■ CORBA 3.0 (2002)◆ Composants, langages de script (e.g. OMG IDLscript)
![Page 7: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/7.jpg)
7
7© 2003, P. Merle ICAR’03
Intergiciel CORBA
CompilateurOMG IDL
Interface OMG IDL
ObjetClient
Souche Squelette
POA
ORB ORB
IIOP sur réseau Internet
Appels de méthodes à distance
Transparence vis-à-vis de la distribution et de l’hétérogénéité
Optimisation si co-localisationi.e. pas IIOP ni réseau
PIPIPI
PIPIPI
![Page 8: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/8.jpg)
8
8© 2003, P. Merle ICAR’03
Intergiciel CORBA
■ Divers modèles d’invocations de méthodes◆ Static Invocation Interface (SII)
❖ Contrôle du typage des invocations à la compilation❖ Projection OMG IDL vers souches / squelettes
◆ Dynamic Invocation Interface (DII) + Dynamic Skeleton Interface (DSI)❖ Contrôle du typage des invocations à l’exécution❖ Souche et squelette génériques❖ Découverte OMG IDL via Interface Repository
◆ Asynchronous Method Invocation (AMI)❖ Appel de méthodes asynchrones❖ Résultats obtenues par scrutation périodique ou appel retour
◆ Les trois approches sont compatibles et composables
■ Profils spécialisés◆ Minimum◆ Real-Time◆ Fault-Tolerance
![Page 9: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/9.jpg)
9
9© 2003, P. Merle ICAR’03
Langage OMG IDL
■ Types de données◆ Elémentaires : octet, booléen, entiers, flottants, caractères, chaînes◆ Construits : typedef, énumération, structure, union, séquence, tableau◆ Polymorphes : Any et TypeCode◆ Passage par valeur
■ Exceptions◆ Composées de champs publiques (~structures)
■ Interfaces◆ Opérations + attributs◆ Héritage multiple◆ Passage par référence
■ Types valeurs◆ ~ interface + structure◆ Héritage simple◆ Passage par valeur
■ Standard ISO 14750
![Page 10: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/10.jpg)
10
10© 2003, P. Merle ICAR’03
Projections OMG IDL
■ Règles de traduction des constructions OMG IDL en constructions d’un langage cible, standardisées pour
◆ ADA◆ C◆ C++◆ COBOL◆ CORBA Scripting Language (IDLscript)◆ Java OMG IDL◆ Lisp◆ PL/1◆ Python◆ SmallTalk◆ XML DTD/Schema Value types
■ Non standardisées mais existantes pour Eiffel, TCL, …
![Page 11: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/11.jpg)
11
11© 2003, P. Merle ICAR’03
Quelques implantations de CORBA
■ Commerciales◆ IONA ORBacus et Orbix pour C++ et Java◆ Borland VisiBroker pour C++ et Java◆ SUN Java Development Kit◆ Plates-formes J2EE
❖ BEA WebLogic Enterprise❖ IBM WebSphere
◆ Navigateur Netscape◆ …
■ Open source◆ Red Hat ORBit pour C◆ MICO pour C++◆ AT&T omniORB pour C++◆ TAO pour C++◆ OpenORB pour Java◆ JacORB pour Java◆ Jonathan pour Java◆ …
![Page 12: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/12.jpg)
12
12© 2003, P. Merle ICAR’03
Principaux défauts de CORBA 2.x
■ Non trivial à mettre en œuvre◆ Connaître règles de projections OMG IDL vers langages de programmation
■ Pas de vision des architectures logicielles◆ Liaisons entre objets CORBA cachées dans le code◆ Rarement configurables de l’extérieur, i.e. par architectes◆ Aucun moyen pour raisonner sur des compositions d’objets CORBA
■ Pas de séparation des aspects fonctionnels / non fonctionnels◆ Programmation explicite des aspects non fonctionnels dans code applicatif, e.g.
❖ POA, cycle de vie, (dé)activation, nommage, courtage, notification, persistance, transactions, sécurité, temps réel, tolérances aux pannes, etc.
◆ Complexité accrue pour les experts métiers
■ Pas de standard pour conditionnement et déploiement◆ Uniquement des solutions ad hoc
![Page 13: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/13.jpg)
13
13© 2003, P. Merle ICAR’03
Solutions apportées par le modèle de composants CORBA
■ Vision des architectures logicielles◆ Description explicite des liaisons entre composants CORBA
❖ Liaisons entre types décrites via des ports en OMG IDL❖ Liaisons entre instances décrites via descripteurs XML d’assemblage
■ Meilleur séparation des aspects fonctionnels / non fonctionnels◆ Dichotomie composant / conteneur
❖ Composant contient code métier❖ Conteneur contient code technique
◆ Politiques techniques décrites en XML plutôt que programmées en dur
■ Standard pour le conditionnement, assemblage et déploiement◆ Formats d’archives et de descripteurs XML◆ API de contrôle du déploiement en réparti
■ Mais toujours pas trivial à mettre en œuvre ;-(◆ OMG IDL composant OMG IDL objet langages de programmation
![Page 14: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/14.jpg)
14
14© 2003, P. Merle ICAR’03
Introduction au modèle de composants CORBA
![Page 15: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/15.jpg)
15
15© 2003, P. Merle ICAR’03
Le modèle de composants CORBA
■ Un modèle de composants répartis◆ Multi-langages, multi-OSs, multi-ORBs, multi-fournisseurs, etc.
❖ Vs le modèle EJB centré sur le langage Java❖ Vs le canevas .NET centré sur le fournisseur Microsoft
◆ Un langage de définition des composants et de leurs ports d’interaction❖ Des composants clients (IHM) aux composants serveurs (métiers)
◆ Une technologie XML de conditionnement et d’assemblage de composants◆ Une infrastructure de déploiement réparti◆ Un canevas de conteneurs gérant les politiques de
❖ Cycle de vie, d’activation, de sécurité, de transactions, de persistance et de communication asynchrone
◆ Interopérabilité avec les Enterprise Java Beans (EJB 1.1)◆ Méta modèle MOF pour l’ingénierie dirigée par les modèles (MDE / MDA)
![Page 16: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/16.jpg)
16
16© 2003, P. Merle ICAR’03
Similarités avec EJB, COM et .NET
■ Comme SUN Microsystems’s Enterprise Java Beans (EJB)◆ Composants CORBA créés et gérés par des maisons (homes)
◆ S’exécutant dans des conteneurs prenant en charge les services systèmes
◆ Hébergés par des serveurs d’applications
■ Comme Microsoft’s Component Object Model (COM)◆ Composants CORBA ont plusieurs interfaces offertes et requises
❖ Accessibles par appel de méthodes ou par notification d’événements◆ Navigation et introspection des interfaces
■ Comme Microsoft’s .NET Framework◆ Support de différents langages de programmation
◆ Technologie de conditionnement pour déploiement
![Page 17: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/17.jpg)
17
17© 2003, P. Merle ICAR’03
Différences avec EJB, COM et .NET
■ CCM réunit simultanément les “bonnes” fonctionnalités des EJB, de COM et de .NET
◆ +++ ouvert +++ hétérogénéité +++ portabilité +++ interopérabilité +++
■ CCM fournit un cadre global pour la construction d’applications à base de composants distribués
◆ Spécification, implantation, conditionnement, assemblage, déploiement et exécution des composants
■ Répartition des assemblages de composants CORBA◆ Peuvent être déployés et s’exécutés sur différentes machines
■ Segmentation de l’implantation des composants◆ Plusieurs classes au lieu d’une seule◆ Un état persistant par segment possible
![Page 18: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/18.jpg)
18
18© 2003, P. Merle ICAR’03
Réseau Internet
Une application CCM
C1C2
C3
C4
C5 C6
C7
C8C9
![Page 19: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/19.jpg)
19
19© 2003, P. Merle ICAR’03
Un composant CORBA et ses ports
ComposantMétier
Interface du composant
Facettes
Sourcesd’événements
Puits d’événements
Attributs
Réceptacles
OFF
ERTS
REQ
UIS
![Page 20: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/20.jpg)
20
20© 2003, P. Merle ICAR’03
Conteneur et implantationd’un composant CORBA
Business ComponentConteneur du Composant
BusinessImplementation
ImplantationMétier
■ Par interposition, le conteneur gère◆ Le cycle de vie, i.e. Service, Session, Process, Entity◆ Les ports, l’activation, la persistance, les transactions, la sécurité, les
communications
![Page 21: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/21.jpg)
21
21© 2003, P. Merle ICAR’03
Implantation segmentée d’un composant CORBA
Business ComponentConteneur du Composant
BusinessImplementation
Implantation Métier
■ Implantation de plusieurs ports offerts ayant la même interface◆ Impossible si le composant est implanté par une unique classe◆ Equivalent aux “component parts ” dans UML 2.0
Segment principal
Segment 2
Segment 3
Segment 4
![Page 22: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/22.jpg)
22
22© 2003, P. Merle ICAR’03
Segmentation de la persistance d’un composant CORBA
Business ComponentConteneur du Composant
BusinessImplementation
Implantation Métier
■ Contrôle fin de la persistance métier◆ Chaque segment peut avoir son propre état persistant stocké sur un support
de données distinct
Segment principal
Segment 2
Segment 3
Segment 4
![Page 23: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/23.jpg)
23
23© 2003, P. Merle ICAR’03
CCM : un cadre global pour la construction d’applications
■ Spécification des composants◆ Via OMG Interface Definition Language (OMG IDL)
❖ Description des composants, de leurs ports et des maisons■ Implantation des composants
◆ Via OMG Component Implementation Definition Language (OMG CIDL)❖ Description du cycle de vie, de la persistance et de la segmentation des
composants◆ Via Component Implementation Framework (CIF)
❖ Règles de programmation à respecter❖ Interfaces conteneur composant & composant conteneur
■ Conditionnement des composants◆ Via archives ZIP incluant des descripteurs XML + code binaire
■ Assemblage des composants◆ Via le XML Component Assembly Descriptor (CAD) et des archives ZIP
■ Déploiement des composants◆ Via une infrastructure répartie d’interprétation des descripteurs XML
■ Exécution des composants◆ Via des conteneurs hébergés par des serveurs d’applications
![Page 24: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/24.jpg)
24
24© 2003, P. Merle ICAR’03
Les langages de définition du CCM
■ OMG IDL 2.x◆ Modèle orienté objet◆ i.e. types de données, exceptions, interfaces
et types valeurs
■ OMG IDL 3.0◆ Modèle orienté composant◆ i.e. types de composants, maisons et événements
■ OMG PSDL◆ Définition d’états persistents◆ i.e. types et maisons [abstraites] de stockage
■ OMG CIDL◆ Description de l’implantation de composants◆ i.e. compositions et segments
OMG IDL 2.x
OMG PSDL
OMG IDL3.0
OMG CIDL
étend
étend
étend
étend
![Page 25: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/25.jpg)
25
25© 2003, P. Merle ICAR’03
De la conception au conditionnement des composants CORBA
CompilateurLangage
Programmation
ConcepteurComposant
OMG IDL,PSDL &
CIDL
CompilateurOMG IDL
PSDL & CIDL
DéveloppeurComposant
ImplantationExécuteurComposant
Stubs et Skeletons
Client-sideOMG IDL
XMLComponentDescriptor
ComposantBinaire
référence décrit
UtilisateurComposant
ConditionneurComposant
Localserver-sideOMG IDL
Implante
![Page 26: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/26.jpg)
26
26© 2003, P. Merle ICAR’03
Conception, développement, conditionnement et assemblage
IDL/CIDL
Compiler
IDL/CIDL File
Stubs, Skeletons
PackagingTool
Implementation
ProgrammingLanguage
Tools
User's Code
ComponentDescriptor
Default Properties
AssemblyTool
ComponentAssemblyPackage
Home Properties Component Properties
AssemblyDescriptor
softpkgDescriptor
User written fileCompilerGenerated files
CORBAComponent
Package
CORBAComponent
Package
concepteur développeur
conditionneur assembleur
![Page 27: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/27.jpg)
27
27© 2003, P. Merle ICAR’03
Le déploiement d’assemblages CCM
Archive ZIPComponent
Outil IHMde
déploiement
Archive ZIPAssembly
Deployed ApplicationDeployed
ApplicationDeployed
ApplicationApplicationdéployée
Infrastructure répartiede déploiement
Déployeur
ORB
Archive ZIPComponent
![Page 28: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/28.jpg)
28
28© 2003, P. Merle ICAR’03
Réseau Internet
Le déploiement d’uneapplication CCM
![Page 29: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/29.jpg)
29
29© 2003, P. Merle ICAR’03
Réseau Internet
Le déploiement d’uneapplication CCM
C1C2
C3
C4
C5 C6
C7
C8C9
![Page 30: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/30.jpg)
30
30© 2003, P. Merle ICAR’03
Conteneurs CORBA, ORB et services
Object Request Broker (ORB)
Conteneur CCM
POA1 POA2 POA3
Conteneur EJB Conteneur CCM
NotificationService
SecurityService
TransactionService
PersistenceService
EJBCC CC CC CC
CCEJBEJB
![Page 31: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/31.jpg)
31
31© 2003, P. Merle ICAR’03
La spécification CORBA Components
■ Le modèle de composants CORBA
■ Component Implementation Definition Language (CIDL)
■ Component Implementation Framework (CIF)
■ Component Container Programming Model
■ Interopérabilité avec EJB 1.1
■ Conditionnement et déploiement
■ Un méta modèle MOF pour OMG IDL et CIDL
=> Spécification OMG disponible ~ 500 pages
![Page 32: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/32.jpg)
32
32© 2003, P. Merle ICAR’03
Le modèle abstrait de composants CORBA
![Page 33: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/33.jpg)
33
33© 2003, P. Merle ICAR’03
Le modèle abstrait decomposants CORBA
■ Permet de capturer les fonctionnalités externes des composants CORBA
◆ Facettes = interfaces offertes
◆ Réceptacles = interfaces requises
◆ Puits = événements consommés
◆ Sources = événements produits
◆ Attributs = propriétés configurables
◆ Opérations des maisons / gestionnaires de composants
■ Exprimé via le langage OMG IDL 3.0◆ Nouvelles constructions syntaxiques masquant des canevas de conception
◆ Traduites vers des interfaces OMG IDL compatibles CORBA 2.x
![Page 34: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/34.jpg)
34
34© 2003, P. Merle ICAR’03
Un composant CORBA
ComposantCORBA
Interface du composant
Facettes
Sourcesd’événements
Puits d’événements
Attributs
Réceptacles
OFF
ERTS
REQ
UIS
![Page 35: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/35.jpg)
35
35© 2003, P. Merle ICAR’03
Construire une application CCM = Assembler des composants CORBA
![Page 36: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/36.jpg)
36
36© 2003, P. Merle ICAR’03
Types et instances decomposants CORBA
■ Un type de composants◆ Nouveau méta-type et mot-clé OMG IDL component◆ Identification de la liste des ports via nouveaux mots-clés
❖ provides pour les facettes❖ [multiple] uses pour les réceptacles simples ou multiples❖ consumes pour les puits d’événements❖ emits / publishes pour les sources d’événements (1:1 | 1:N)❖ [readonly] attribute pour les propriétés configurables
◆ Héritage simple entre types de composants◆ Héritage multiple d’interfaces (mot-clé supports)
■ Une instance de composant◆ 1 référence distincte pour l’interface de base, chaque facette et chaque puits◆ API générique pour la connexion, navigation et introspection des ports◆ Créée et gérée par une unique instance de maison
![Page 37: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/37.jpg)
37
37© 2003, P. Merle ICAR’03
Une maison de composants CORBA
Maison de Composants
c1
…
cN
Interface maison
![Page 38: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/38.jpg)
38
38© 2003, P. Merle ICAR’03
Types et instances demaisons de composants CORBA
■ Un type de maisons◆ Nouveau méta-type et mot-clé OMG IDL home◆ Identification de l’unique type de composants gérés (mot-clé manages)
❖ Plusieurs types de maisons pour le même type de composants possible◆ Identification du type de l’identité / clé persistante des composants
❖ mot-clé primarykey ; pour composants Entity◆ Opérations factory et finder
◆ N’importe quelle opération métier◆ Héritage simple entre types de maisons◆ Héritage multiple d’interfaces (mot-clé supports)
■ Une instance de maison◆ 1 référence pour l’interface de base◆ Instanciée lors du déploiement◆ Co localisation des instances de composants gérés
![Page 39: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/39.jpg)
39
39© 2003, P. Merle ICAR’03
L’exemple du dîner des philosophes
ThinkingHungryStarvingEatingDead
Kant
ThinkingHungryStarvingEatingDead
Descartes
ThinkingHungryStarvingEatingDead
Aristotle
Fork
Fork
Fork
![Page 40: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/40.jpg)
40
40© 2003, P. Merle ICAR’03
Les composants CORBA du dîner des philosophes
Philosopher
name = Kant
Philosopher
name = Aristotle
Philosopher
name = Descartes
Fork
Fork
Fork
Component
Base ref.FacetReceptacle
Event SourceEvent Sink
Observer
![Page 41: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/41.jpg)
41
41© 2003, P. Merle ICAR’03
Le composant ForkManager
exception InUse {};
interface Fork{
void get() raises (InUse);void release();
};
// The fork component.component ForkManager{
// The fork facet used by philosophers.provides Fork the_fork;
};
// Home for instantiating ForkManager components.home ForkHome manages ForkManager {};
ForkManager
![Page 42: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/42.jpg)
42
42© 2003, P. Merle ICAR’03
Le composant ForkManager
exception InUse {};
interface Fork{
void get() raises (InUse);void release();
};
// The fork component.component ForkManager{
// The fork facet used by philosophers.provides Fork the_fork;
};
// Home for instantiating ForkManager components.home ForkHome manages ForkManager {};
ForkManager
![Page 43: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/43.jpg)
43
43© 2003, P. Merle ICAR’03
Le composant ForkManager
exception InUse {};
interface Fork{
void get() raises (InUse);void release();
};
// The fork component.component ForkManager{
// The fork facet used by philosophers.provides Fork the_fork;
};
// Home for instantiating ForkManager components.home ForkHome manages ForkManager {};
ForkManager
![Page 44: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/44.jpg)
44
44© 2003, P. Merle ICAR’03
ForkHomeLa maison pour ForkManager
exception InUse {};
interface Fork{
void get() raises (InUse);void release();
};
// The fork component.component ForkManager{
// The fork facet used by philosophers.provides Fork the_fork;
};
// Home for instantiating ForkManager components.home ForkHome manages ForkManager {};
ForkManager
![Page 45: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/45.jpg)
45
45© 2003, P. Merle ICAR’03
Le composant Philosopher
enum PhilosopherState{
EATING, THINKING, HUNGRY,STARVING, DEAD
};
eventtype StatusInfo{
public string name;public PhilosopherState state;public unsigned long ticks_since_last_meal;public boolean has_left_fork;public boolean has_right_fork;
};
Philosopher
name = XXX
![Page 46: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/46.jpg)
46
46© 2003, P. Merle ICAR’03
Le composant Philosopher
component Philosopher{
attribute string name;// The left fork receptacle.uses Fork left;// The right fork receptacle.uses Fork right;// The status info event source.publishes StatusInfo info;
};
home PhilosopherHome manages Philosopher {factory new(in string name);
};
Philosopher
name = XXX
![Page 47: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/47.jpg)
47
47© 2003, P. Merle ICAR’03
Le composant Philosopher
component Philosopher{
attribute string name;// The left fork receptacle.uses Fork left;// The right fork receptacle.uses Fork right;// The status info event source.publishes StatusInfo info;
};
home PhilosopherHome manages Philosopher {factory new(in string name);
};
Philosopher
name = XXX
![Page 48: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/48.jpg)
48
48© 2003, P. Merle ICAR’03
Le composant Philosopher
component Philosopher{
attribute string name;// The left fork receptacle.uses Fork left;// The right fork receptacle.uses Fork right;// The status info event source.publishes StatusInfo info;
};
home PhilosopherHome manages Philosopher {factory new(in string name);
};
Philosopher
name = XXX
![Page 49: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/49.jpg)
49
49© 2003, P. Merle ICAR’03
Le composant Philosopher
component Philosopher{
attribute string name;// The left fork receptacle.uses Fork left;// The right fork receptacle.uses Fork right;// The status info event source.publishes StatusInfo info;
};
home PhilosopherHome manages Philosopher {factory new(in string name);
};
Philosopher
name = XXX
![Page 50: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/50.jpg)
50
50© 2003, P. Merle ICAR’03
PhilosopherHome
La maison de Philosopher
component Philosopher{
attribute string name;// The left fork receptacle.uses Fork left;// The right fork receptacle.uses Fork right;// The status info event source.publishes StatusInfo info;
};
home PhilosopherHome manages Philosopher {factory new(in string name);
};
Philosopher
name = XXX
![Page 51: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/51.jpg)
51
51© 2003, P. Merle ICAR’03
Le composant Observer
component Observer{
// The status info sink port.
consumes StatusInfo info;};
// Home for instantiating observers.
home ObserverHome manages Observer {};
Observer
![Page 52: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/52.jpg)
52
52© 2003, P. Merle ICAR’03
Le composant Observer
component Observer{
// The status info sink port.
consumes StatusInfo info;};
// Home for instantiating observers.
home ObserverHome manages Observer {};
Observer
![Page 53: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/53.jpg)
53
53© 2003, P. Merle ICAR’03
Observer Home
Le maison d’Observer
component Observer{
// The status info sink port.
consumes StatusInfo info;};
// Home for instantiating observers.
home ObserverHome manages Observer {};
Observer
![Page 54: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/54.jpg)
54
54© 2003, P. Merle ICAR’03
La compilation OMG IDL 3.0
ConcepteurComposant
Code utilisateurCompileurCode généré
OMG IDL3.0
Localserver-side
OMG IDL 2.x
SoucheCliente
ExécuteurComposant
SqueletteComposant
CompilateurOMG IDL 3.0
Client-sideOMG IDL 2.x
ClientComposant
DéveloppeurComposant
ApplicationCliente
utilise
Implanté par Délègue vers
implanté par
ORB
![Page 55: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/55.jpg)
55
55© 2003, P. Merle ICAR’03
Projection cliente pour lecomposant Philosopher
component Philosopher {attribute string name;uses Fork left;uses Fork right;publishes StatusInfo info;
};
interface Philosopher :::Components::CCMObject {
attribute string name;
.../...
Philosopher
name = XXX
Traduit en
![Page 56: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/56.jpg)
56
56© 2003, P. Merle ICAR’03
Projection cliente pour lecomposant Philosopher
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 StatusInfoConsumer consumer) raises(…);
StatusInfoConsumer unsubscribe_info(in Components::Cookie ck) raises(…);
};
Philosopher
name = XXX
![Page 57: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/57.jpg)
57
57© 2003, P. Merle ICAR’03
Component Implementation Framework (CIF)
■ Définit le modèle de programmation de l’implantation des composants
◆ Concepts de composition, de segment et d’exécuteur
◆ Projection composant OMG IDL en interfaces locales OMG IDL
◆ Interfaces OMG IDL des conteneurs❖ SessionContext et EntityContext, …
◆ Interfaces OMG IDL des exécuteurs de composant❖ SessionComponent et EntityComponent, …
◆ Component Implementation Description Language (CIDL)
![Page 58: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/58.jpg)
58
58© 2003, P. Merle ICAR’03
Component Implementation Definition Language (CIDL)
■ Description de la structure d’implantation des composants◆ Composition d’une implantation de maison et d’une implantation de
composant◆ Segmentation de l’implantation des composants◆ Association d’un état persistant à chaque segment
■ OMG Persistent State Definition Language (OMG PSS)◆ Description des états persistants
■ Génération de squelettes prenant en charge◆ Les ports des composants◆ Le cycle de vie des composants◆ La segmentation de l’implantation◆ La liaison avec les états persistants◆ L’implantation par défaut des opérations de retour
❖ configuration_complete, ccm_activate, ccm_passivate, ccm_load, ccm_store, ccm_remove
![Page 59: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/59.jpg)
59
59© 2003, P. Merle ICAR’03
Composition CIDLpour le composant ForkManager
import DiningPhilosophers;
composition session ForkManagerComposition{
home executor ForkHomeSessionImpl{implements DiningPhilosophers::ForkHome;manages ForkManagerSessionImpl {segment Seg {
provides facet the_fork; }};
};};
![Page 60: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/60.jpg)
60
60© 2003, P. Merle ICAR’03
Local Server-Side Mapping
La compilation CIDL
Exécuteur ComposantOMG IDL
3.0
OMG CIDL
Squelettes gérantports, cycle de vie,
segmentation,persistance,GIOP/IIOP
Compilés vers
![Page 61: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/61.jpg)
61
61© 2003, P. Merle ICAR’03
Le conditionnement, l’assemblageet le déploiement CCM
![Page 62: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/62.jpg)
62
62© 2003, P. Merle ICAR’03
Conditionnement, assemblage et déploiement via le CCM
■ CORBA 2.x : aucun moyen standard pour configurer, conditionner, diffuser et déployer des applications réparties
■ CCM fournit une technologie de conditionnement, d’assemblage et de déploiement d’applications à base de composants hétérogènes et distribués◆ Composants et assemblages conditionnés dans des archives ZIP
◆ Auto-description via divers descripteurs XML
◆ API de l’infrastructure de déploiement répartie
◆ Déploiement totalement automatisé
![Page 63: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/63.jpg)
63
63© 2003, P. Merle ICAR’03
Archive de composant
■ Unité de conditionnement réutilisable dans des assemblages◆ Auto descriptive et auto suffisante
■ Fichier ZIP contenant◆ Un Software Package Descriptor (.csd) décrivant le contenu de l’archive
◆ Le fichier OMG IDL du composant, des interfaces des ports et de la maison
◆ Des Property File Descriptor (.cpf)❖ Les valeurs par défauts des attributs
◆ Une ou plusieurs implantations binaires❖ E.g. pour différents OSs, ORBs, processeurs, QoS, ...
◆ Des CORBA Component Descriptor (.ccd)❖ Configuration des politiques techniques gérées par les conteneurs
![Page 64: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/64.jpg)
64
64© 2003, P. Merle ICAR’03
Artefacts de conditionnementdes composants
IDL/CIDLCompiler
IDL/CIDL File
Stubs, Skeletons
PackagingTool
Implementation
ProgrammingLanguage
Tools
User's Code
ComponentDescriptor
Default Properties
AssemblyTool
ComponentAssemblyPackage
Home Properties Component Properties
DeploymentTool
CORBAComponent
Package
CORBAComponent
Package
AssemblyDescriptor
CORBAComponent
Package
softpkgDescriptor
![Page 65: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/65.jpg)
65
65© 2003, P. Merle ICAR’03
Conditionnement de composants
IDL/CIDL Compiler
UserCode
GeneratedCode
IDL
ComponentDescriptor
DefaultConfiguration
Compiler
SharedLibrary orExecutable
Packaging Tool
ComponentPackage
.zipCIDL
![Page 66: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/66.jpg)
66
66© 2003, P. Merle ICAR’03
Archive d’assemblage
■ Unité de conditionnement réutilisable pour le déploiement automatique d’applications réparties
◆ Auto descriptive et auto suffisante
■ Fichier ZIP contenant◆ Un Component Assembly Descriptor (.cad)
❖ Le placement des maisons à créer❖ Les instances de composants à créer❖ Les connexions entre les ports
◆ Des Property File Descriptors (.cpf)❖ Les valeurs initiales des attributs
◆ Une ou plusieurs archives de composants❖ Soit inclusion du contenu des archives❖ Soit inclusion des archives❖ Soit références URL vers des archives externes
![Page 67: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/67.jpg)
67
67© 2003, P. Merle ICAR’03
Artefacts d’assemblagedes composants
IDL/CIDLCompiler
IDL/CIDL File
Stubs, Skeletons
PackagingTool
Implementation
ProgrammingLanguage
Tools
User's Code
ComponentDescriptor
Default Properties
AssemblyTool
ComponentAssemblyPackage
Home Properties Component Properties
DeploymentTool
CORBAComponent
Package
CORBAComponent
Package
AssemblyDescriptor
CORBAComponent
Package
softpkgDescriptor
![Page 68: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/68.jpg)
68
68© 2003, P. Merle ICAR’03
Assemblage de composants
ConfigurationValues
DeploymentTool
AssemblyArchive
.aar (ZIP)
Assembly Tool
ComponentPackage
ComponentPackage
ComponentPackage
PortConnections
InstanceCreation
...
![Page 69: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/69.jpg)
69
69© 2003, P. Merle ICAR’03
L’outil d’assemblage de MicoCCM
![Page 70: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/70.jpg)
70
70© 2003, P. Merle ICAR’03
Les descripteurs XML du CCM
■ Software Package Descriptor (.csd)◆ Description du contenu d’une archive de composant logiciel◆ Identification d’une ou plusieurs implantations binaires
■ CORBA Component Descriptor (.ccd)◆ Informations techniques générées depuis définitions CIDL◆ Paramétrage des politiques gérées par les conteneurs
■ Component Property File Descriptor (.cpf)◆ Configuration des attributs des maisons et des composants
■ Component Assembly Descriptor (.cad)◆ Identification des archives de composants utilisées◆ Description d’un assemblage de composants
![Page 71: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/71.jpg)
71
71© 2003, P. Merle ICAR’03
Software Package Descriptor (.csd)
■ Informations générales◆ Titre, description, auteurs, compagnies, liens Web, licences
■ Lien sur le descripteur XML de propriétés par défaut (.cpf)■ Lien sur le fichier OMG IDL du composant■ Pour chaque implantation
◆ Informations techniques❖ Systèmes d’exploitation, processeurs, langages, compilateurs et ORBs
supportés❖ Dépendances vers des bibliothèques externes❖ Pré requis de déploiement
◆ Lien sur descripteurs .cpf et .ccd spécifiques
◆ Lien sur le fichier d’implantation❖ Bibliothèque partagée, classe ou archive Java, exécutable, …
◆ Point d’entrée de l’implantation de la maison, i.e. fonction statique
![Page 72: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/72.jpg)
72
72© 2003, P. Merle ICAR’03
Exemple deSoftware Package Descriptor
<?xml version='1.0'?><!DOCTYPE softpkg><softpkg name="PhilosopherHome">
<idl id="IDL:DiningPhilosophers/PhilosopherHome:1.0"><fileinarchive name="philo.idl"/>
</idl><implementation id="*">
<code type="DLL"><fileinarchive name="philo.dll"/><entrypoint>create_DiningPhilosophers_PhilosopherHome</entrypoint>
</code></implementation>
</softpkg>
![Page 73: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/73.jpg)
73
73© 2003, P. Merle ICAR’03
Software Package Descriptorpour Composant Observer
<?xml version="1.0"?><!DOCTYPE softpkg SYSTEM "softpkg.dtd">
<softpkg name="Observer" version="1,0,0,0"><pkgtype>CORBA Component</pkgtype><title>Observer</title><author><name>Philippe Merle</name><company>INRIA</company><webpage href="http://www.inria.fr"/>
</author><description>The CCM dining philosophers example</description>
![Page 74: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/74.jpg)
74
74© 2003, P. Merle ICAR’03
Software Package Descriptorpour Composant Observer
<license href= "http://www.objectweb.org/license.html"/>
<idl id="IDL:DiningPhilosophers/Observer:1.0"><link href="http://www.objectweb.org/philo.idl"/>
</idl>
<descriptor type="CORBA Component"><fileinarchive name="observer.ccd"/>
</descriptor>
<propertyfile><fileinarchive name="observer.cpf"/>
</propertyfile>
<implementation> . . . </implementation> </softpkg>
![Page 75: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/75.jpg)
75
75© 2003, P. Merle ICAR’03
Software Package Descriptorpour Composant Observer
<implementation id="Observer_impl"><os name="WinNT" version="4,0,0,0"/><os name="Linux" version="2,2,17,0"/><processor name="x86"/><compiler name="JDK"/><programminglanguage name="Java"/><code type="Java class">
<fileinarchive name="ObserverHomeImpl.class"/><entrypoint>ObserverHomeImpl.create_home</entrypoint>
</code><runtime name="Java VM" version="1,2,2,0"/><runtime name="Java VM" version="1,3,0,0"/><dependency>...</dependency>
</implementation>
![Page 76: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/76.jpg)
76
76© 2003, P. Merle ICAR’03
Software Package Descriptorpour Composant Observer
<dependency type="ORB" action="assert"> <name>OpenORB</name>
</dependency>
<dependency type="Java Class" action="install"><valuetypefactoryrepid="IDL:DiningPhilosophers/StatusInfo:1.0"valueentrypoint="DiningPhilosophers.StatusInfoDefaultFactory.create"factoryentrypoint="DiningPhilosophers.StatusInfoDefaultFactory"><fileinarchivename="DiningPhilosophers/StatusInfoDefaultFactory.class"/>
</valuetypefactory></dependency>
![Page 77: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/77.jpg)
77
77© 2003, P. Merle ICAR’03
Software Package Descriptorpour Composant Observer
<implementation id="observer_0x1"><os name="Win2000" /><processor name="x86" /><compiler name="VC++" /><programminglanguage name="C++" /><dependency type="DLL"><localfile name="jtc.dll"/></dependency><dependency type="DLL"><localfile name="ob.dll"/></dependency><descriptor type="CORBA Component"><fileinarchive name="observer.ccd" />
</descriptor><code type="DLL"><fileinarchive name="PhilosophersExecutors.dll"/><entrypoint>create_ObserverHome</entrypoint>
</code></implementation>
![Page 78: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/78.jpg)
78
78© 2003, P. Merle ICAR’03
CORBA Component Descriptor (.ccd)
■ Informations techniques générées depuis CIDL◆ Fonctionnalités des types de composants et de maisons◆ Ports et interfaces supportées◆ Catégorie du composant et segments
■ Politiques du conteneur à compléter◆ Threading◆ Cycle de vie des servants POA◆ Transactions◆ Sécurité◆ Events◆ Persistance◆ Politiques POA étendues
■ Lien vers fichiers de propriétés pour la maison et ses instances de composants
![Page 79: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/79.jpg)
79
79© 2003, P. Merle ICAR’03
Exemple deCORBA Component Descriptor
<corbacomponent><corbaversion>3.0</corbaversion><componentrepid>IDL:DiningPhilosophers/Philosopher:1.0</componentrepid> <homerepid>IDL:DiningPhilosophers/PhilosopherHome:1.0</homerepid><componentkind><session><servant lifetime=“component”/></session></componentkind><threading policy=“multithread”/><configurationcomplete set=“true”/><homefeatures name=“PhilosopherHome” repid=“IDL:...PhilosopherHome:1.0”/><componentfeatures name=“Philosopher” repid=“IDL:...Philosopher:1.0”>
<ports><publishes publishesname=“info” eventtype=“IDL:DiningPhilosophers/StatusInfo:1.0”>
<eventpolicy/></publishes><uses usesname=“left” repid=“IDL:DiningPhilosophers/Fork:1.0”/><uses usesname=“right” repid=“IDL:DiningPhilosophers/Fork:1.0”/>
</ports></componentfeatures>
</corbacomponent>
![Page 80: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/80.jpg)
80
80© 2003, P. Merle ICAR’03
CORBA Component Descriptorpour Composant Philosopher
<?xml version="1.0"?><!DOCTYPE corbacomponent SYSTEM "corbacomponent.dtd">
<corbacomponent><corbaversion>3.0</corbaversion><componentrepid repid=
"IDL:DiningPhilosophers/Philosopher:1.0"/><homerepid repid=
"IDL:DiningPhilosophers/PhilosopherHome:1.0"/><componentkind><process><servant lifetime="container" /></process></componentkind>
<security rightsfamily="CORBA“rightscombinator="secanyrights" />
<threading policy="multithread" /><configurationcomplete set="true" />
![Page 81: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/81.jpg)
81
81© 2003, P. Merle ICAR’03
CORBA Component Descriptorpour Composant Philosopher
<homefeatures name="PhilosopherHome"repid="IDL:DiningPhilosophers/PhilosopherHome:1.0"/>
<componentfeatures name="Philosopher"repid="IDL:DiningPhilosophers/Philosopher:1.0">
<ports><uses usesname="right"
repid="IDL:DiningPhilosophers/Fork:1.0" /><uses usesname="left"
repid="IDL:DiningPhilosophers/Fork:1.0" /><publishes emitsname="info"
eventtype="StatusInfo"><eventpolicy policy="normal" />
</publishes></ports>
</componentfeatures><interface name="Fork" repid="IDL:DiningPhilosophers/Fork:1.0"/>
![Page 82: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/82.jpg)
82
82© 2003, P. Merle ICAR’03
CORBA Component Descriptorpour Composant Philosopher
<segment name="philosopherseg" segmenttag="1"><segmentmember facettag="1" /><containermanagedpersistence><storagehome id="PSDL:PersonHome:1.0"/><pssimplementation id="OpenORB-PSS" /><accessmode mode="READ_WRITE" /><psstransaction policy="TRANSACTIONAL" >
<psstransactionisolationlevel level="SERIALIZABLE" /></psstransaction><params><param name="x" value="1" />
</params></containermanagedpersistence>
</segment></corbacomponent>
![Page 83: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/83.jpg)
83
83© 2003, P. Merle ICAR’03
Property File Descriptor (.cpf)
■ Permet de fixer les propriétés des instances de maisons et de composants
■ Contient un couple (nom, valeur) pour chaque attribut àconfigurer
■ Descripteurs référencés depuis◆ Software Package Descriptors
❖ valeurs par défaut des attributs des composants◆ CORBA Component Descriptors
❖ valeurs par défaut des attributs des composants et/ou des maisons◆ Component Assembly Descriptors
❖ Valeurs initiales des instances de maisons et de composants
![Page 84: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/84.jpg)
84
84© 2003, P. Merle ICAR’03
Property File pour Philosopher Kant
<?xml version="1.0"?><!DOCTYPE properties SYSTEM "properties.dtd">
<properties><simple name="name" type="string"><description>Philosopher name</description><value>Kant</value><defaultvalue>Unknown</defaultvalue>
</simple></properties>
![Page 85: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/85.jpg)
85
85© 2003, P. Merle ICAR’03
Les fichiers XML de propriétés CCM
IDL/CIDLCompiler
IDL/CIDL File
Stubs, Skeletons
PackagingTool
Implementation
ProgrammingLanguage
Tools
User's Code
ComponentDescriptor
Default Properties
AssemblyTool
ComponentAssemblyPackage
Home Properties Component Properties
DeploymentTool
CORBAComponent
Package
CORBAComponent
Package
AssemblyDescriptor
CORBAComponent
Package
softpkgDescriptor
![Page 86: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/86.jpg)
86
86© 2003, P. Merle ICAR’03
Component Assembly Descriptor(.cad)
■ Implantations de composants à utiliser◆ Références vers 1 ou plusieurs Component Software Descriptors
■ Instances de maisons à créer◆ Placement, co-localisation et cardinalité
■ Instances de composants à créer
■ Connexions entre les instances de composants◆ Réceptacles facettes et sources puits
■ Valeurs initiales des attributs des maisons et composants
■ Enregistrement des maisons et des composants◆ Services de Nommage, Courtage et ComponentHomeFinder
![Page 87: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/87.jpg)
87
87© 2003, P. Merle ICAR’03
Exemple du dîner des philosophes
Philosopher
name = Kant
Philosopher
name = Aristotle
Philosopher
name = Descartes
Fork
Fork
Fork
Component
Base ref.FacetReceptacle
Event SourceEvent Sink
Observer
![Page 88: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/88.jpg)
88
88© 2003, P. Merle ICAR’03
Component Assembly Descriptorpour Dîner des Philosophes
<?xml version="1.0"?><!DOCTYPE componentassembly SYSTEM "componentassembly.dtd"><componentassembly id="demophilo"><description>Dinner assembly descriptor</description><componentfiles><componentfile id="PhilosopherComponent"><fileinarchive name="philosopher.csd"/></componentfile><componentfile id="ObserverComponent"><fileinarchive name="observer.csd"/></componentfile><componentfile id="ForkManagerComponent"><fileinarchive name="forkmanager.csd"/>
</componentfile></componentfiles>
![Page 89: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/89.jpg)
89
89© 2003, P. Merle ICAR’03
Component Assembly Descriptorpour Dîner des Philosophes
<partitioning><homeplacement id="ObserverHome">
<componentfileref idref="ObserverComponent"/><registerwithnaming name=“Dinner/ObserverHome"/>
</homeplacement><homeplacement id="PhilosopherHome">
<componentfileref idref="PhilosopherComponent"/><registerwithnaming name="Dinner/PhilosopherHome"/>
</homeplacement><homeplacement id="ForkHome">
<componentfileref idref="ForkComponent"/><registerwithnaming name="Dinner/ForkHome"/>
</homeplacement></partitioning><connections/></componentassembly>
![Page 90: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/90.jpg)
90
90© 2003, P. Merle ICAR’03
Component Assembly Descriptorpour Dîner des Philosophes
<partitioning><homeplacement id="ObserverHome">
<componentfileref idref="ObserverComponent"/><componentinstantiation id="Freud"/><registerwithnaming name=“Dinner/ObserverComponent"/>
</homeplacement>
<homeplacement id="ForkHome"><componentfileref idref="ForkManagerComponent"/><componentinstantiation id="ForkManager1"/><componentinstantiation id="ForkManager2"/><componentinstantiation id="ForkManager3"/><registerwithhomefinder name="ForkHome"/>
</homeplacement>
![Page 91: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/91.jpg)
91
91© 2003, P. Merle ICAR’03
Component Assembly Descriptorpour Dîner des Philosophes
<homeplacement id="PhilosopherHome"><componentfileref idref="PhilosopherComponent"/>
<componentinstantiation id="Kant"><componentproperties><fileinarchive name="Kant.cpf"/>
</componentproperties></componentinstantiation>
<componentinstantiation id="Descartes"><componentproperties><fileinarchive name="Descartes.cpf"/>
</componentproperties></componentinstantiation>
<componentinstantiation id="Aristotle"><componentproperties><fileinarchive name="Aristotle.cpf"/>
</componentproperties></componentinstantiation>
</homeplacement></partitioning>
![Page 92: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/92.jpg)
92
92© 2003, P. Merle ICAR’03
Component Assembly Descriptorpour Dîner des Philosophes
<connections>
<connectinterface>
<usesport><usesidentifier>left</usesidentifier><componentinstantiationref idref="Kant"/>
</usesport>
<providesport><providesidentifier>the_fork</providesidentifier><componentinstantiationref idref="ForkManager1"/>
</providesport>
</connectinterface>
Philosopher
name = Kant
Fork
![Page 93: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/93.jpg)
93
93© 2003, P. Merle ICAR’03
Component Assembly Descriptorpour Dîner des Philosophes
<connectevent>
<publishesport><publishesidentifier>info</publishesidentifier><componentinstantiationref idref="Kant"/>
</publishesport>
<consumesport><consumesidentifier>info</consumesidentifier><componentinstantiationref idref="Freud"/>
</consumesport>
</connectevent>
Philosopher
name = Kant Observer
![Page 94: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/94.jpg)
94
94© 2003, P. Merle ICAR’03
Référencement entre lesdescripteurs XML du CCM
CORBAComponentDescriptor
ComponentProperty
FileDescriptor
SoftwarePackage
Descriptor
ComponentAssemblyDescriptor
* *
*
*
*
![Page 95: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/95.jpg)
95
95© 2003, P. Merle ICAR’03
Le déploiement d’assemblages CCM
Archive ZIPComponent
Outil IHMde
déploiement
Archive ZIPAssembly
Deployed ApplicationDeployed
ApplicationDeployed
ApplicationApplicationdéployée
Infrastructure répartiede déploiement
Déployeur
ORB
Archive ZIPComponent
![Page 96: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/96.jpg)
96
96© 2003, P. Merle ICAR’03
Le déploiement CCM
■ Déploiement automatique et réparti d’assemblages de composants CORBA
◆ Installation du code binaire des composants sur leur site d’exécution❖ Demande aux sites de télécharger le code accessible via Internet
◆ Démarrage des serveurs d’applications nécessaires sur chaque site d’exécution
◆ Création des conteneurs dans chaque serveur démarré
◆ Installation des maisons dans les conteneurs❖ Chargement du code maison / composant en mémoire
◆ Instanciation des composants à partir des maisons
◆ Configuration des attributs des instances de composants
◆ Interconnexion des composants via leurs ports
◆ Démarrage effectif de tous les composants
![Page 97: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/97.jpg)
97
97© 2003, P. Merle ICAR’03
Interfaces de l’infrastructure de déploiement
■ ComponentInstallation◆ Installation des implantations binaires de composants◆ 1 instance par machine
■ AssemblyFactory◆ Fabrique des objets Assembly◆ 1 instance par domaine, e.g. un réseau, un ensemble de machines, …
■ Assembly◆ Contrôleur du déploiement d’un assemblage◆ Interpréteur des Component Assembly Descriptor (CAD)
■ ServerActivator◆ Fabrique d’objets ComponentServer◆ Une instance par machine
■ ComponentServer◆ Fabrique d’objets Container
■ Container◆ Installation et instanciation des maisons de composants
![Page 98: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/98.jpg)
98
98© 2003, P. Merle ICAR’03
Machine Processus
Domaine
Le processus de déploiementdu CCM
Deployment Tool
AssemblyFactory Assembly
ServerActivator
ComponentServer
Container
CCMHome
CCMObjectComponentInstallation
«instantiates»
«instantiates»
«instantiates»
«instantiates»
«instantiates»
![Page 99: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/99.jpg)
99
99© 2003, P. Merle ICAR’03
Scénario de déploiement
Deployment Tool
Déployeur
ComponentAssemblyDescriptor
ComponentAssembly
Descriptor +
with assignment information
![Page 100: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/100.jpg)
100
100© 2003, P. Merle ICAR’03
Scénario de déploiement :chargement des implantations
Deployment Tool
ComponentAssembly
Descriptor +
ComponentInstallationComponentInstallation
Code forComponent B
Code forComponent A
![Page 101: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/101.jpg)
101
101© 2003, P. Merle ICAR’03
Scénario de déploiement :création de l’objet Assembly
Deployment Tool
Code forComponent B
Code forComponent A
AssemblyFactory
Assembly
![Page 102: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/102.jpg)
102
102© 2003, P. Merle ICAR’03
Scénario de déploiement :instanciation des serveurs de composants
ComponentAssembly
Descriptor +
Code forComponent B
Code forComponent A
AssemblyServerActivator
ComponentServer
ServerActivator
ComponentServer
![Page 103: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/103.jpg)
103
103© 2003, P. Merle ICAR’03
Scénario de déploiement :instanciation des conteneurs
ComponentAssembly
Descriptor +
Code forComponent B
Code forComponent A
Assembly
ComponentServer ComponentServer
ContainerContainer
![Page 104: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/104.jpg)
104
104© 2003, P. Merle ICAR’03
Scénario de déploiement :installation des maisons
ComponentAssembly
Descriptor +
Assembly
Home for B
Container
Home for A
Container
Code forComponent B
Code forComponent A
![Page 105: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/105.jpg)
105
105© 2003, P. Merle ICAR’03
Scénario de déploiement :instanciation des composants
ComponentAssembly
Descriptor +
Assembly
Home for BHome for A
B instanceA instance
![Page 106: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/106.jpg)
106
106© 2003, P. Merle ICAR’03
Scénario de déploiement :configuration des composants
ComponentAssembly
Descriptor +
Assembly
Home for BHome for A
B instanceA instance
![Page 107: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/107.jpg)
107
107© 2003, P. Merle ICAR’03
Le déploiement de l’applicationDîner des Philosophes
■ Démarrer l’outil de déploiement◆ Utilise le ComponentInstallation de chaque site d’exécution pour télécharger
les implantations binaires nécessaires◆ Utilise l’AssemblyFactory pour créer un Assembly◆ Invoque l’opération build() de l’instance Assembly
❖ Création des serveurs de composants nécessaires❖ Création des conteneurs❖ Installation des maisons❖ Création des instances de composants❖ Interconnexion des ports des composants❖ Invocation configuration_complete() sur chaque composant
■ Déploiement totalement distribué et automatisé
![Page 108: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/108.jpg)
108
108© 2003, P. Merle ICAR’03
Les conteneurs CORBA
![Page 109: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/109.jpg)
109
109© 2003, P. Merle ICAR’03
Les conteneurs CCM
■ Un conteneur gère une catégorie de composants◆ entity : persistant, clé primaire et destruction explicite
◆ process : persistant, pas de clé et destruction explicite
◆ session : existe durant une session avec le client
◆ service : existe durant une invocation
◆ EJBsession, EJBentity : support pour EJBs
◆ empty : autres politiques spécifiques
■ Encapsule un ou des Portable Object Adaptors◆ (Dé)activation automatique◆ Optimisation des ressources
■ Fournit des interfaces simplifiées pour les services CORBA◆ Sécurité, transactions et persistance
■ Utilise des appels retour pour la gestion des instances
![Page 110: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/110.jpg)
110
110© 2003, P. Merle ICAR’03
L’architecture d’un serveur de conteneurs
Container ManagerSession
ContainerEJB
ContainerOther
ContainerEntity
Container
POA1 POA2 POA3 POA4
ORB
Transactions Security Persistence Events
![Page 111: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/111.jpg)
111
111© 2003, P. Merle ICAR’03
L’architecture d’un conteneur
Container
ORB
SecurityTransaction NotificationPersistency
CORBAComponent
Home
POA
Client
ExtendedOMG IDLexternal
API
InternalAPI
CallbackAPI
![Page 112: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/112.jpg)
112
112© 2003, P. Merle ICAR’03
Politiques gérées par les conteneurs
■ Décrites via CORBA Component Descriptors (.ccd)
■ Implantées par le conteneur, pas par le composant
■ Politiques définies pour :◆ Cycle de vie des servants
◆ Transaction
◆ Sécurité
◆ Evénements
◆ Persistance
![Page 113: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/113.jpg)
113
113© 2003, P. Merle ICAR’03
Politiques de cycle de viedes servants
■ method – valide pour toutes les catégories◆ Activation avant chaque invocation◆ Passivation après chaque invocation
■ transaction – valide pour toutes sauf service◆ Activation avant la 1ière invocation d’une nouvelle transaction◆ Passivation après la dernière invocation de la transaction
■ component – valide pour toutes sauf service◆ Activation avant la 1ière invocation◆ Passivation explicite par le composant
■ container – valide pour toutes sauf service◆ Activation avant la 1ière invocation◆ Passivation quand le conteneur requière de la mémoire
![Page 114: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/114.jpg)
114
114© 2003, P. Merle ICAR’03
Politiques transactionnelles
■ Définies pour chaque opération si gérées par le conteneur◆ NOT_SUPPORTED◆ REQUIRED◆ SUPPORTS◆ REQUIRES_NEW◆ MANDATORY◆ NEVER
■ Gérées par le composant via l’API Components::Transaction::UserTransaction◆ Simplification de l’API CosTransactions (OMG OTS)
![Page 115: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/115.jpg)
115
115© 2003, P. Merle ICAR’03
Politiques de sécurité
■ Définies pour chaque opération si gérées par le conteneur (élément security des descripteurs de composants)◆ CLIENT_IDENTITY◆ SYSTEM_IDENTITY◆ SPECIFIED_IDENTITY (=userid)
■ Les conteneurs contrôlent à l’exécution l’identité de l’appelant et ses droits
■ Construit au dessus de CORBA Security V2
![Page 116: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/116.jpg)
116
116© 2003, P. Merle ICAR’03
Politiques événementielles
■ Comportement transactionnelle de la notification des événements défini pour chaque source◆ non-transactional◆ default◆ transactional
■ Le conteneur peut utiliser le service de notification CORBA◆ Modèle push uniquement◆ Projection des eventtypes en Structured Events◆ Création des channels
![Page 117: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/117.jpg)
117
117© 2003, P. Merle ICAR’03
Politiques de persistance
■ Uniquement pour composants Process et Entity
■ Self managed ou Container managed
■ Utilise le service de persistance CORBA (PSS) ou un mécanisme de persistance propriétaire
![Page 118: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/118.jpg)
118
118© 2003, P. Merle ICAR’03
Conclusions
![Page 119: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/119.jpg)
119
119© 2003, P. Merle ICAR’03
Le modèle de composants CORBA
■ 1ier standard industriel pour les composants distribués◆ Ouvert, hétérogénéité, portabilité et interopérabilité◆ Un processus d’ingénierie de logiciel à base de composants◆ Un modèle abstrait de composants riche
❖ Très proche du modèle de composants UML 2.0◆ Conditionnement, assemblage et déploiement réparti◆ Un canevas de conteneurs◆ Interopérabilité avec EJB◆ Méta modèles prêts pour l’approche Model Driven Architecture
(MDA)■ Au coeur de CORBA 3.0
◆ Spécification libre ~ 500 pages■ Mais peu d’intérêts de la part des fournisseurs CORBA
◆ Ils surfent sur la vague des Web Services
![Page 120: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/120.jpg)
120
120© 2003, P. Merle ICAR’03
Implantations CCM
■ OpenCCM - ObjectWeb / INRIA & LIFL◆ Open source Java sur ORBacus 4.1 & OpenORB 1.x & BES 5.x◆ http://openccm.objectweb.org/
■ MicoCCM - FPX & Alcatel◆ Open source C++ sur MICO◆ http://www.fpx.de/MicoCCM/
■ Qedo - IST COACH◆ Fraunhofer FOKUS & Humboldt University◆ Open source C++ sur MICO & ORBacus 4.1 (& TAO)◆ http://qedo.berlios.de
■ EJCCM - CPI Inc.◆ Semi open source Java sur OpenORB 1.x◆ http://www.ejccm.org
■ K2 - ICMG◆ Produit commercial C++ sur divers ORBs◆ http://www.icmgworld.com
■ Quelques autres implantations moins connues
![Page 121: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/121.jpg)
121
121© 2003, P. Merle ICAR’03
Activités OMG autour du CCM
■ Components 1.2 Revision Task Force (RTF)◆ Révision de la spécification CORBA Components
■ Deployment and Configuration FTF◆ Modèle de conditionnement, d’assemblage et de déploiement plus sophistiqué◆ OMG TC Document ptc/03-07_02 & 08
■ Soumission Fraunhofer FOKUS/IK++ pour MOF 2.0 IDL RFP◆ Référentiels MOF construits en composants CORBA◆ RFP = OMG TC Document ad/01-11-07◆ Subm. = OMG TC Document ad/02-12-05
■ UML Profile for CORBA Components RFP◆ Extension du profil UML/CORBA pour composants CORBA◆ RFP = OMG TC Document ab/02-10-01◆ Subm. = OMG TC Document mars/03-05-09
■ Lightweight CCM RFP◆ Simplication du CCM pour systèmes embarqués◆ RFP = OMG TC Document realtime/02-11-27◆ Subm. = OMG TC Document realtime/03-05-05
■ Streams for CORBA Components RFP◆ Nouveaux types de ports pour communication par flux◆ RFP = OMG TC Document mars/03-06-11
■ QoS for CORBA Components RFP◆ Prise en compte de qualités de services dans le CCM◆ RFP = OMG TC Document mars/03-06-12
![Page 122: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/122.jpg)
122
122© 2003, P. Merle ICAR’03
Références sur le modèle de composants CORBA
■ CORBA 3 Fundamentals and Programming◆ Dr. John Siegel, publié chez John Wiley and Sons
■ CORBA/IIOP Specification version 3.0.2◆ OMG TC Document formal/2002-12-06
■ CORBA Components Specification◆ OMG TC Document formal/2002-06-65 & ptc/2002-08-03
■ CORBA Component Model Tutorial◆ OMG TC Document ccm/2002-06-01
■ “The CCM Page”, Diego Sevilla Ruiz◆ http://www.ditec.um.es/~dsevilla/ccm/
■ IST COACH Project◆ http://www.ist-coach.org
![Page 123: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/123.jpg)
123
123© 2003, P. Merle ICAR’03
Pas d’intergiciel universel pour composants !
CORBA EJB .NET . . .
Enjeu majeur !
OMGMDA
?
![Page 124: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/124.jpg)
124
124© 2003, P. Merle ICAR’03
Pas d’intergiciel universel pour composants !
MDA
ObjectWeb Software InfrastructureJ2EE CORBA 3 Web Services . . .
Subs
trat
e Tech
nica
l Com
pone
nts
ASM KilimFractalMonolog THINK
Plat
form
s
Jonathan
CAROL C-JDBC
RmiJdbcJOTM
JORAM
SpeedoJOnAS OpenCCM ProActive OSGi
JORM
Medor
App
lica
tion
s
Apollon
JMOB
RUBBoSRUBiS
Interaction Centric Data Centric
PIMPIMPIMPIM
PIMPIM
WS PSMWS PSMCORBA 3
PSMCORBA 3
PSMJ2EE PSMJ2EE PSM
Next BestPSM
Next BestPSM
![Page 125: Mod.le Composants CORBA](https://reader035.fdocuments.fr/reader035/viewer/2022062416/62ad6c990c3f9f3b042fed03/html5/thumbnails/125.jpg)
125
125© 2003, P. Merle ICAR’03
Merci