Title: Aucun titre de diapositive
1CORBA Common Object Request Broker
Architecture Mise en pratique avec Orbacus en
JAVA
- Mireille Blay-Fornarino
- blay_at_essi.fr
Extraits de JM Geib, C. Gransart, P. Merle
http//www.iona.com/products/orbacus_home.htm
2Plan du Cours
CORBA I Introduction Intégration
d applications CORBA la réponse de
l OMG l OMG promouvoir la standardisation Le
modèle client serveur orienté objet L architect
ure OMA II OMG-IDL Interface Definition
Language III Larchitecture CORBA Composantes
du Bus Mise en œuvre Services Interopérabilité
IV. Conclusion CORBA 3.0 CORBA et les
autres
CORBA Component Model (CCM) Mireille
Blay-Fornarino
3Consensus pour linteropérabilité
1.1-histoire
- Le problème Intégration des applications
- Pas de consensus sur les langages de
programmation - Pas de consensus sur les plate-formes de
développement - Pas de consensus sur les systèmes dexploitation
- Pas de consensus sur les protocoles réseau
- Pas de consensus sur les formats des données
- manipulées par les applications
- Recherche dun Consensus pour linteropérabilité
The bad news is that there will never be a
single operating system, single programming
language, or single network architecture that
replaces all that has passed The good news is
that you can still manage to build systems
economically in this environment. Model
Driven Architecture by Richard Soley and the
OMG Staff Strategy Group
4CORBA
1.2 CORBA?
- Common Object Request Broker Architecture CORBA
- Plate-forme client/serveur orientée objets
- Un standard pour linteropérabilité entre objets
- Support pour différents langages
- Support pour différentes plate-formes
(interopérabilité) - Communications au travers du réseau
- Des services (Distributed transactions, events,
... ) - Guides et modèles de programmation
CORBA replaces ad-hoc special-purpose
mechanisms (such as socket communication) with an
open, standardized, scalable, and portable
platform.
5Historique
1.2 CORBA?
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
2000
2002
CORBA 3.0
CORBA 2.1
Fondation de lOMG
Publication de lOMA
Publication CORBA 1.1
Mapping IDL/C
Adoption CORBA 2.0
Publication CORBA 1.2
CORBA 2.3
Publication CORBA 1.0
- Minimum Corba
- RealTime Corba
- Corba Component Model
6Object Management Group (OMG)
I.3. OMG
- consortium international créé en 1989
- but non lucratif
- regroupement de plus de 460 organismes
- constructeurs (SUN, HP, DEC, IBM, ...)
- environnements systèmes (Microsoft, OSF, Novell,
...) - outils et langages (Iona, Object Design,
Borland, ...) - produits et BD (Lotus, Oracle, Informix, O2,
...) - industriels (Boeing, Alcatel, Thomson, ...)
- institutions et universités (INRIA, NASA, LIFL,
W3C)
http//www.omg.org
The Worlds Best Standardization Process In
addition to its technologies, OMG has the worlds
best standardization process. Executing our
process, building consensus as they converge on
technical details, OMG members produce each new
specification in nine to seventeen months. Proven
in the marketplace with the standardization of
CORBA, the CORBAservices, Domain Facilities, UML,
the MOF, and OMGs other modeling standards, the
process is one of our groups major assets.
7Organisation et procédures
I.3. OMG
- Comité technique
- détermine la direction de larchitecture et des
normes - émet des RFI (Request For Information) pour
vérifier la disponibilité des technologies - émet des RFP (Request For Proposal) pour obtenir
des propositions de spécifications - évalue les propositions et propose une sélection
- fait des recommandations au comité directeur sur
les choix des - technologies.
- Comité directeur
- prend les décisions finales pour ladoption des
spécifications.
8OMG en résumé
I.3. OMG
L OMG prône l utilisation d une approche basée
sur les technologies objet (devenu modèle
) pour offrir une vue unique d un système
distribué et hétérogène OMA pour
l architecture logicielle OMA Object
Managment Architecture ? MDA (Model Driven
Architecture) CORBA pour le middleware
technique CORBA Common Object Request Broker
Architecture UML pour la modélisation UML
Unified Modeling language MOF pour la
méta-modélisation MOF Meta-Object Facility
9Le modèle client/serveur orienté objet (1)
I.4. Client/serveur
Activation
Objet Corba
Servant
ORB Object Request Broker Bus à Objets
répartis
10Client/Serveur (2)
I.4. Client/serveur
- Rôle du client
- invoquer des services par envoie de requête
- accès à lobjet destinataire via une
référence - accès à l implantation via une interface
11Client/Serveur (3)
I.4. Client/serveur
- L infrastructure de distribution reçoit une
requête pour un objet destinataire - Localisation du serveur actif ou non
- Activation éventuelle du serveur
- Rôle du serveur
- Activation par le serveur du servant concerné
- Le serveur détermine et exécute la méthode
spécifiée par la requête et passe les résultats
éventuels à l infrastructure qui les ramènent
vers le client - Fin de l activité du serveur
- Arrêt complet du serveur qui en informe alors
l infrastructure.
12Définitions (1/3)
I.4. Client/serveur
Client Entité capable démettre des requêtes
vers des objets qui fournissent des
services. Le client manipule des références
vers des objets distants. Référence Objet Objet
manipulé par le client pour invoquer des services
sur un objet distant objet
implémentation. Terme usité proxy Un
proxy est un représentant local au client dun
objet distant.
13Définitions (2/3)
I.4. Client/serveur
Requête Emise par un client pour demander
lexécution dune opération sur un objet
cible. La requête contient lopération à
exécuter, lobjet cible et les paramètres
éventuels. Interface Description dun
ensemble dopérations disponibles sur un objet.
Spécification des interfaces en
IDL. Opération Entité identifiable
caractérisée par une signature décrivant les
paramètres de la requête et les valeurs de retour.
14Définitions (3/3)
I.4. Client/serveur
Serveur application qui crée des objets CORBA
et rend les services fournis par ces objets
accessibles à dautres applications. Objet
implémentation Objet situé sur le serveur
qui implémente le code des méthodes des
opérations définies en IDL.
15ORB (2/2)
I.5. OMA ORB
- Composant central du standard CORBA qui gère
- la localisation dobjet
- la désignation des objets
- lempaquetage des paramètres (marshalling)
- le dépaquetage des paramètres (unmarshalling)
- linvocation des méthodes
- la gestion des exceptions
- l activation automatique et transparente des
objets - De plus, il fournit des caractéristiques telles
que - la liaison avec tous les langages de
programmation - un système auto-descriptif
- l interopérabilité entre les bus
16Bus Corba fonctions ...
I.5. OMA ORB
Client
serveur
Référence -gt faire(param1,param2,...)
Marshaling
ORB
réseau
17ORB Liaison avec tous les langages de
programmation
I.5. OMA ORB
C
Java
Smalltalk
Ada
Souche
Souche
Souche
Souche
Bus Corba
18OMA
- Object Management Architecture
19Object Management Architecture
I.5. OMA
- Description dune architecture de Gestion
dObjets - classifiant les objets en fonction de leurs rôles
et - définissant les bases des futures spécifications
incluant - une prise en compte des problèmes dintégration
dans des environnements distribués - un modèle dobjets abstrait
- larchitecture du modèle de référence
- InterOpérabilité entre ORBs
- un glossaire des termes utilisés
Utiliser des services standardisés à la
conception, limplantation et lexécution.
20Concepts (1/2)
I.5. OMA Modèle objet
Vue dun objet dans une application d'objets
distribués
Vue dun objet dans une application monolithique
s q e l e t t e s
i m p l
invocation distante
objet
objet sur serveur Servant
objet sur client Proxy
Legende
impl objet implementation
21Concepts (2/2)
I.5. OMA Modèle objet
serveur pur
client pur
client serveur
objet serveur
objet client
invocation distante
obj1 Impl
c- obj1
s
objet serveur
objet serveur
obj3 Impl
s
obj2 Impl
s
invocation distante
invocation distante
objet client
c- obj2
objet client
c- obj3
Application 1
Application 2
Application 3
Legende
c-obji objet client obji
obji Impl objet implementation obji
s squelette
22Architecture du modèle de référence
I.5. OMA
CORBA
Bus dobjets répartis (O.R.B.)
23Processus de développement
243- Le langage IDL
3. IDL
Un esperanto pour les objets
Le contrat IDL
Client d objets
Fournisseur d objets
Stub IDL
Bus CORBA
Squelette IDL
Objets Corba
25Étapes de mise en oeuvre
Spécification interface IDL
Compilation interface IDL
Implantation des objets Corba
Implantation du serveur
Implantation du client
Enregistrement du serveur
Côté client
Côté serveur
Utilisation du service Nommage
26Spécification interface IDL (1/2)
1- Exemple introductif
Un objet grid est un tableau contenant des
valeurs. Les valeurs sont accessibles grâce aux
opérateurs get et set qui peuvent être invoqués
à distance.
objets grid
Appel de get et set sur l'objet grid distant
Processus client
Processus serveur
27Spécification interface IDL (2/2)
1- Exemple introductif
interface Grid readonly attribute short
height readonly attribute short width void
set (in short n, in short m, in long value)
long get(in short n, in short m) void
copyIn(inout Grid g)
28Le langage IDL
3. IDL Description
Interface Definition Language
- langage de spécification dinterfaces,
supportant lhéritage multiple - indépendant de tout langage de programmation ou
- compilateur (langage pivot entre
applications) - langage utilisé pour générer les stubs, les
squelettes et pour définir - les interfaces du Référentiel dinterface
- la correspondance IDL-langage de programmation
est fournie pour les langages C, C, Java,
Smalltalk, Ada, Cobol.
29Exemple
3. IDL Description
interface account readonly attribute
float balance attribute string description
void credit (in float f) void
debit (in float f) interface currentAccount
account readonly attribute float
overdraftLimit interface bank
exception reject string reason
account newAccount (in string name) raises
(reject) currentAccount newCurrentAccount
(in string name, in float limit) raises
(reject) void deleteAccount (in account
a)
interface
attribut
opérations
exception
opérations
30Eléments IDL
3. IDL Description
- Une spécification IDL définit un ou plusieurs
types, constantes, - exceptions, interfaces, modules,...
- pragma
- constantes
- types de base au format binaire normalisé
- nouveaux types (typedef, enum, struct,
union, array, sequence) - exceptions
- types de méta-données (TypeCode, any)
31Eléments IDL
3. IDL Description
- Un module permet de limiter la validité des
identificateurs - Interface ensemble dopérations et de types
gtclasse C -
- Syntaxe
- Interface lthéritagegt ltinterface Bodygt
- opération (synchrone ou asynchrone sans
résultat) - attribut (possibilité de lecture seule)
Surcharge Interdite
- Réutilisation de spécifications existantes
(include)
32Exemple
3. IDL Description
module unService typedef unsigned long
EntierPositif typedef sequenceltPositifgt
desEntiersPositifs interface Premier
boolean est_premier ( in EntierPositif
nombre) desEntiersPositifs nombres_premiers (in
EntierPositif nombre) module
monApplication interface MonService
unServiceEntierPositif prochainPremier(..)
module
définitions de type
interface
opérations
33Exemple
3. IDL Description
34Attribut IDL
3. IDL Description
Définition dattribut interface account
readonly attribute float balance attribute
string description ... Equivaut à
float get_balance() string
get_description() void set_description(in
string s)
35Operations (1/2)
3. IDL Description
ltuneOpérationgt ltmodeInvocationgt lttypeRetourgt
ltidentificateurgt ( ltparamètresgt )
ltclausesExceptionsgtltclausesContextesgt
- Paramètres nommés
- et associés à un mode
- Opérations bloquantes
- par défaut
void op1 (in long input, out long output,
inout long both) interface account interface
bank account newAccount (in string name)
void deleteAccount (in account old)
Client
uneBanque
newAccount
calcul
retours
36Pourquoi différents modes de passage de
paramètres ?
in Données fournies par le client out
Données retournées par l objet inout Données
clientes modifiées par l objet
Répartition
Passage par copie
37Opérations (2/2)
3. IDL Description
- Opération non bloquante
- Pas de paramètre de type out, inout ou
dexceptions - Valeur de retour void
- Pas d exceptions déclenchées.
Client
uneBanque
notify(ok )
méthode finie
38Exceptions
3. IDL Description
exception reject string reason
account newAccount (in string name) raises
(reject) exception DateErronnee String
raison
CORBAException
CORBAUserException
CORBASystemException
Des exceptions CORBA standardisées
UNKNOWN NO_PERMISSION BAD_PARAM
NO_IMPLEMENT COM_FAILURE OBJECT_NOT_EXIST INV_O
BJREF .
Gestion explicite de la part du client
39Définitions circulaires
3. IDL Description
module Circulaire interface B interface A
void utiliséB(in B unB) interface B
void utiliséA(in A unA)
40Héritage multiple
3. IDL Description
interface A ... interface B A ...
interface C A ... interface D B, C
...
A
B
C
D
41Types de base et autres types
3. IDL Description
- Types de base
- short
- long
- unsigned short
- unsigned long
- float
- double
- char
- boolean
- octet
- ...
- Types construits
- struct
- union
- enum
- Types génériques
- array
- sequence
- string
MétaTypes
Types de données dynamiques et auto-descriptifs
42Type Any
3. IDL Description
interface PileDeChaines readonly attribut
string sommet void poser(in string
valeur) string retirer()
interface PileGénérique readonly attribut Any
sommet readonly attribut TypeCode
typeDesValeurs void poser(in Any valeur) Any
retirer()
43Exemple Compilation interface IDL vers Java
1- Exemple introductif
Grid.idl
jidl Grid.idl
A écrire
Compilateur IDL/Java
Généré
Répertoire grid
Répertoire grid
Répertoire grid
Répertoire grid
Client
Serveur
GridOperations.java
_GridStub.java
GridPOA.java
I
Grid.java
Client.java
Grid_Impl.java
GridHelper.java
Serveur.java
GridHolder.java
44Les classes Stubs et Squelettes
1- Exemple introductif
- implantation du stub
- public class _GridStub . Grid
- envoie de requêtes
- invisible par le programmeur
- instanciée automatiquement par GridHelper
(narrow) - Utilise le DII pour assurer la portabilité du
binaire - implantation du squelette
- public abstract class GridPOA . GridOperations
- reçoit et décode des requêtes
- doit être héritée par limplantation
45Implémentation du serveur (1)
1- Exemple introductif
- 1. Initialiser le bus CORBA
- obtenir lobjet ORB
- 2. Initialiser ladaptateur dobjets
- obtenir le POA
- 3. Créer les implantations dobjets
- 4. Enregistrer les implantations par ladaptateur
- 5. Diffuser leurs références
- afficher une chaîne codifiant lIOR
- 6. Attendre des requêtes venant du bus
- 7. Destruction du Bus
46Implémentation du client
1- Exemple introductif
- 1. Initialiser le bus (objet ORB)
- 2. Créer les souches des objets à utiliser
- 2.a. obtenir les références dobjet (IOR)
- 2.b. convertir vers les types nécessaires
- narrow contrôle le typage à travers le réseau
- 3. Réaliser les traitements
- Rem. éviter lopérateur bind (2.a 2.b)
- spécifique à chaque produit donc non portable
47Objets CORBA
A CORBA object is an object with an interface
defined in CORBA IDL. CORBA objects have
different representations in clients and
servers. A server implements a CORBA object in a
concrete programming language, for example in C
or Java. This is done by writing an
implementation class for the CORBA object and by
instantiating this class. The resulting
implementation object is called a servant. A
client that wants to make use of an object
implemented by a server creates an object that
delegates all operation calls to the servant via
the ORB. Such an object is called a proxy. When a
client invokes a method on the local proxy
object, the ORB packs the input parameters and
sends them to the server, which in turn unpacks
these parameters and invokes the actual method on
the servant. Output parameters and return values,
if any, follow the reverse path back to the
client. From the clients perspective, the proxy
acts just like the remote object since it hides
all the communication details within itself. A
servant must somehow be connected to the ORB, so
that the ORB can invoke a method on the servant
when a request is received from a client. This
connection is handled by the Portable Object
Adapter (POA)
48Passage d un objet par référence ou par valeur
Processus A
Processus A
invocation d une méthode
invocation d une méthode
copie d objet créée
référence Objet
serialized Object
Processus A
Processus A
Processus B
Processus B
Objet
référence Objet
Objet
copie Objet
49Le cycle de vie des objets
- Problème
- actuellement, 1 grille 1 serveur
- pas de création/destruction dobjets à distance
- seulement invocation dopérations
- Solution
- notion de fabrique dobjets
- exprimée en OMG-IDL
- Cest un canevas de conception Design pattern
- voir aussi le service LifeCycle
Autres usages de la fabrique - gestion de
droits, load-balancing, polymophisme,
50Limplantation de la fabrique
Grille
Fabrique
51Limplantation de la fabrique
Grille
Fabrique
52Interface IDL d une fabrique de Grilles
module grilles . . . interface Fabrique
Grid newGrid(in short width,in short height)
53Scénario d obtention de la référence du service
de nommage
ORB
Client ou Serveur
resolve_initial_references ("NameService")
CosNaming NamingContext
conversion
ajout,retrait,lecture,...
54Notion de chemin daccès
55Enregistrer un objet
- Opération pour publier un Objet
- en général, opération réalisée par le serveur
- Scénario Type
- 1. Créer un objet
- 2. Construire un chemin d accès (Name)
- 3. Appeler l opération bind ou rebind
avec le chemin et la référence de l objet - void bind (in Name n, in Object obj)
- raises (NotFound, CannotProceed,
InvalidName, AlreadyBound)
56Retrouver un objet
- Opération réalisée par un client ou un serveur
- Scénario type
- construire un chemin d accès (Name)
- appeler l opération resolve avec le chemin
- convertir la référence obtenue dans le bon type
- Object resolve (in Name n)
- raises (NotFound, CannotProceed, InvalidName)
57Une application dadministration de la fabrique
- Création dune nouvelle grille et mise à
disposition par le service Nommage - 1. Initialiser le bus CORBA
- 2. Obtenir le service Nommage (NS)
- 3. Obtenir la fabrique depuis le NS
- 4. Créer un répertoire
- 5. Enregistrer le répertoire dans le NS
58What is ORBacus? http//www.ooc.com/ob/.
ORBACUS is an Object Request Broker (ORB) that is
compliant with the Common Object Request Broker
Architecture (CORBA) specification (2.4
features 3)
Dynamic Invocation and Dynamic Skeleton
Interface Dynamic Any Interface and
Implementation Repository Pluggable Protocols
IDL-to-HTML and IDL-RTF documentation tools
Includes Naming, Trading, Event, Notify, Property
Services,balancing,
Full CORBA IDL support C and Java language
mappings Simple configuration and
bootstrapping Portable Object Adapter Objects
by Value Portable Interceptors Single- and
Multi-threaded Active Connection Management
Fault Tolerant Extensions
59Conclusion
- CORBA ça marche et cest simple
- Choisir son langage dimplantation
- C complexe et moins portable
- Java portable et plus lent
- Choisir son bus
- 1 bus 1 bibliothèque
- mixer les bus cest possible
Expérimentez en TPs !