Title: Corba avec Java et C
1Corba avec Java et C 2004 Jean-Marc
Vanel Transiciel - Sogeti
2Contenu et déroulement
- Plan
- Partie 1 survol
- vision Corba
- mise en oeuvre de Corba
- liaison et transport dans Corba
- services communs
- Annexe - exemple HelloWorld
- Partie 2
- Service de nommage (désignation)
- Premier programme CORBA en C
- Etude du type Any
- Les mécanismes dynamiques de C.O.R.B.A.
- Synthèse sur C.O.R.B.A.
3Vision de Corba
4OMG concepts-clés
- Permettre linteropérabilité des composants /
applications par lintermédiaire dun mode de
coopération unifié lappel dobjets distants - Gérer lhétérogénéité des réseaux, machines,
systèmes et langages - Vision utilisateur langage pivot commun
OMG-IDL - Offrir une architecture globale
5OMG les objectifs techniques
- Liaison avec tous les langages
- Transparence des invocations
- Invocation statique et dynamique
- Système auto-descriptif
- Activation automatique
- Interopérabilité entre bus
6OMG vision globale
- Common Object Request Broker Architecture CORBA
- appel de méthode réparti transparent
- passages de paramètres in, out, in/out
- types de paramètres types de base (entiers,
string, etc), références dobjets, objets par
valeur - un bus à objets répartis (ORB)
- transport des requêtes, activation des objets
- des services de base (CORBAservices)
- des utilitaires communs (CORBAfacilities)
- des interfaces de domaines objets métiers
-  interopérabilité sémantiqueÂ
7OMA larchitecture globale
8OMG le modèle client/serveur objet
Objet CORBA
9Mise en oeuvre de Corba
10OMG-IDL le langage dinterfaces
- Rôle du langage
- décrire les interfaces des objets
- langage pivot entre applications
- générer des squelettes de programme dans les
langages de programmation des applications
11OMG-IDL mise en oeuvre des interfaces
- Projection des descriptions OMG-IDL vers les
langages dimplantation des clients et des
serveurs (e.g., C, C, Java, etc). - mode  statiqueÂ
- Instanciation sous forme dobjets CORBA des
descriptions OMG-IDL depuis un référentiel
dinterfaces. - mode  dynamiqueÂ
12CORBA les composantes du bus
13Liaison et transport dans Corba
14Les couches de transport de CORBA
- GIOP protocole dinteropérabilité entre bus de
la norme CORBA 2 - support à lappel de méthode (enveloppe
REQUEST, REPLY, etc) - encodage des données CDR
- GIOP sur Internet Internet Inter ORB Protocol
(IIOP) - champs  service context (ex standardisation
ctxt transactions, sécurité)
15Nommage dans Corba
- Noms du domaine Corba
- Interoperable Object Reference IOR
- identification protocole
- interface OMG-IDL
- Sous-domaine Corba/Internet
- adresse IP port
16Mise en place dune liaison
17Services communs
18Les services communs (1)
- Services de localisation dobjets
- service de nommage (Naming)
- pour retrouver un objet par un nom
- service de type  pages blanchesÂ
- service de courtage (Trader)
- pour retrouver un objet par des propriétés
- service de type  pages jaunesÂ
19Les services communs (2)
- Services de communications asynchrones
- Events, Notification, Messaging
- Services de sûreté de fonctionnement
- Security, Transactions, Concurrence
- Services concernant la vie des objets
- Life Cycle, Property, Relationship,
Externalization, Persistent Object, Query,
Collection, Versionning, Time, Licencing
20Exemple  Hello World en Java
21Chaine de production de programme
22De lIDL Ã Java
- Interface OMG-IDL Hello
- Interfaces Java HelloOperations, Hello
- Classes Java HelloHelper, HelloHolder
23Implantation du serveur Corba
24Implantation du client Corba
25Les classes générées (client et serveur)
- Classe _HelloStub implantation du talon
- sert à envoyer les requêtes
- utilisé en lieu et place de l'objet Hello dans le
client - Classe HelloPOA ? Classe HelloPOATie
- reçoit et décode les requêtes ?reçoit et décode
les requêtes - implantation par héritage ?implantation par
délégation
26Corba dynamique
27Linvocation dynamique
- Référentiel dinterfaces (IR)
- accessible comme objet Corba
- gestion de méta-objets Corba (ModuleDef,
InterfaceDef, OperationDef, AttributeDef,
TypedefDef, ) - API (DII) de construction de requêtes
- Un objet Request un nom dopération, une liste
de couples type-valeur (au sens de lIR), une
structure pour le résultat, des méthodes - invoke
- send_deferred, get_response, poll_response
- send_oneway
28Le squelette dynamique
- API (DSI) de décodage de requêtes
- Pas dutilisation de squelettes pré-générés
- Utilisée pour implanter dynamiquement des objets
- Cas dutilisation création de passerelles