CORBA - PowerPoint PPT Presentation

Loading...

PPT – CORBA PowerPoint presentation | free to download - id: 2a84ad-ZDc1Z



Loading


The Adobe Flash plugin is needed to view this content

Get the plugin now

View by Category
About This Presentation
Title:

CORBA

Description:

... Group), un consortium regroupant plusieurs acteurs du monde informatique ... – PowerPoint PPT presentation

Number of Views:36
Avg rating:3.0/5.0
Slides: 53
Provided by: Oba7
Category:
Tags: corba | acteurs

less

Write a Comment
User Comments (0)
Transcript and Presenter's Notes

Title: CORBA


1
CORBA
  • CORBA (Common Object Request Broker Architecture)
    a été proposé par l OMG (Object Management
    Group), un consortium regroupant plusieurs
    acteurs du monde informatique
  • Standard pour lintégration dapplications
    distribuées hétérogènes à partir des technologies
    orientées objet.
  • Middleware Orienté-Objets

2
Services de CORBA
  • CORBA propose un modèle client/serveur
    dabstraction et de coopération entre les
    applications réparties.
  • Abstraction Chaque application peut exporter
    certaines de ses services sous la forme dobjets
    CORBA.
  • Coopération Les interactions entre les
    applications se fait par invocations à distance
    des méthodes des objets.
  • Serveur Application implantant lobjet
  • Client Application utilisant lobjet.

3
Le modèle Client/Serveur de CORBA
Application Cliente
Implantation
Bus Corba (ORB)
Requête
Référence de l objet
Activation
Application Serveur
Interface de l objet
4
Architecture OMA
  • L OMG a proposé OMA, une architecture de modèle
    d applications CORBA
  • Bus dobjets répartis ORB
  • Services objet communs les fonctions systèmes
    nécessaires à la plupart des applications
    réparties.
  • utilitaires communs canevas dobjets qui
    répondent aux besoins des utilisateurs
  • interfaces de domaine objets de métiers
  • objets applicatifs spécifiques à une
    application répartie donnée

5
Architecture de OMA
Objets applicatifs
Interfaces du domaine
Utilitaires communs
Workflow
Adminsitration
Télécomm
Santé
Bus d objets répartis
Nommage
Concurrence
Transactions
Temps
Sécurité
Services Objet communs
6
Le bus CORBA
  • Le bus est lintermédiaire à travers lequel les
    objets vont pouvoir dialoguer.
  • Il fournit les fonctions suivantes
  • La liaison avec les langages de programmation.
  • La transparence des invocations 
  • Deux types dinvocation statique (contrôlée à la
    compilation) et dynamique (contrôlée à
    lexécution ).
  • Lactivation automatique et transparente des
    objets 
  • Linteropérabilité entre bus protocole IIOP

7
Le bus CORBA
  • Il fournit plusieurs fonctions
  • ORB (Object Request Broker) Noyau de transport
    des requêtes aux objets (IIOP, …),
  • SII (Static Invocation Interface) Interface
    dinvocations statiques permettant de soumettre
    des requêtes statiques. Cette interface est
    générée à partir de définitions IDL,
  • DII (Dynamic Invocation Interface) Interface
    dinvocations dynamiques,
  • IFR (Interface Repository) Référentiel des
    interfaces contenant une représentation des
    interfaces IDL.

8
Le bus CORBA
  • SSI (Skeleton Static Interface) interface de
    squelettes statiques qui permet à limplantation
    des objets de recevoir les requêtes leur étant
    destinées.
  • DSI (Dynamic Skeleton Interface) interface de
    squelettes dynamiques qui permet dintercepter
    dynamiquement toute requête sans générer une
    interface SSI.
  • OA (Object Adapter) Adaptateur dobjets qui
    soccupe de créer les objets CORBA, de maintenir
    les associations entre objets CORBA et
    implantations et de réaliser lactivation
    automatique si nécessaire.
  • ImplR (Implementation Repository) Référentiel
    des implantations qui contient linformation
    nécessaire à lactivation.

9
Le bus CORBA
Fournisseur
Client
DII
SII
SII
Interface Bus
SII
SII
DII
Adaptateur d objets
Object Request Broker
Référentiel Implantations (ImpIR)
Référentiel Interface (IFR)
SII
SII
10
Les protocoles réseaux
  • GIOP représentation commune des données et des
    messages de transport des requêtes aux objets.
  • IIOP implantation de GIOP au dessus de TCP/IP.
  • Les IORs dans le contexte dIIOP doivent
    contenir
  • le nom complet de linterface IDL de lobjet 
  • ladresse IP de la machine Internet où est
    localisé lobjet 
  • un port IP pour se connecter au serveur de
    lobjet 
  • une clé pour désigner lobjet dans le serveur.

11
Les services objet communs
  • La recherche dobjets rechercher dynamiquement
    sur le bus les objets nécessaires aux
    applications (annuaires)
  • Nommage (Naming Service)  les objets sont
    désignés par des noms symboliques (Pages
    blaches).
  • Vendeur (Trader Service) les objets peuvent
    être recherchés en fonction de leurs
    caractéristiques (Pages jaunes).

12
Les services objet communs
  • La vie des objets services prenant en charge les
    différentes étapes de la vie des objets CORBA.
  • Cycle de Vie (Life Cycle Service) décrit des
    interfaces pour la création, la copie, le
    déplacement et la destruction des objets sur le
    bus (Object Factory).
  • Propriétés (Property Service) permet aux
    utilisateurs dassocier dynamiquement des valeurs
    nommées à des objets (annotations).
  • Relations (Relationship Service) sert à gérer des
    associations dynamiques reliant des objets sur le
    bus

13
Les services objet communs
  • Externalisation (Externalization Service)
    mécanisme standard pour fixer ou extraire des
    objets du bus.
  • Persistance (Persistent Object Service) mécanisme
    permettant de stocker des objets sur un support
    persistant.
  • Interrogations (Query Service) permet
    dinterroger les attributs des objets. Il basé
    sur SQL ou OQL. Il permet de manipuler les
    requêtes comme des objets CORBA.

14
Les services objet communs
  • Sûreté de fonctionnement fournit les fonctions
    système assurant la sûreté de fonctionnement
    nécessaire à des applications réparties
  • Sécurité (Security Service) authentifier les
    clients, chiffrer et de certifier les
    communications, contrôler les autorisations
    daccès,... (basé sur IIOP avec Kerberos ou SSL)
  • Transactions (Object Transaction Service) assure
    lexécution de traitements transactionnels
  • Concurrence (Concurrency Service) contrôler et
    ordonnancer les invocations concurrentes sur les
    objets (Verrous, ...).

15
Les services objet communs
  • Les communications asynchrones Par défaut, la
    coopération des objets CORBA est réalisée selon
    un mode de communication client/serveur
    synchrone.
  • Evénements (Event Service) événements
    asynchrones entre objets en mode push ou
    pull.
  • Notification (Notification Service) Les
    consommateurs sont uniquement notifiés des
    événements les intéressant (Usage de filtres sur
    le canal)
  • Messagerie (CORBA Messaging) Requêtes
    persistantes lorsque les objets ne sont pas
    présents simultanément sur le bus.

16
Les interfaces de domaine
  • Business Objects DTF conception dapplications
    métier.
  • Workflow Workgroup fonctionnement des
    applications de gestion de flux de travail
  • C4I DSIG Introduction de CORBA au sein des
    organismes et administrations liés à la défense.
  • CORBAmed standards OMG pour le domaine de la
    médecine.
  • Life Sciences Research DTF utilisation de CORBA
    par les universités et les laboratoires
    pharmaceutiques.

17
Les interfaces de domaine
  • Electronic Commerce sintéresse à la définition
    de technologies CORBA pour les applications de
    commerce électronique.
  • Telecom DTF fait la liaison entre le monde CORBA
    et les télécommunications.
  • Internet Platform SIG travaille sur les
    rapprochements ntre CORBA et le Web.
  • ...

18
Le langage IDL
  • IDL (Interface Definition Language) permet
    dexprimer, sous forme de contrats, la
    coopération entre fournisseurs et utilisateurs de
    services
  • Sépare linterface de limplantation des objets
    en masquant les problèmes liés à
    linteropérabilité, lhétérogénéité et la
    localisation.
  • Les contrats sont projetés en souches IDL (SII)
    dans la programmation du client et en squelettes
    IDL (SSI) dans la programmation du fournisseur
  • Le client invoque localement les souches pour
    accéder aux objets. Les souches IDL construisent
    des requêtes, qui vont être transportées par le
    bus, puis délivrées par celui-ci aux squelettes
    IDL qui les délégueront aux objets.

19
Exemple de spécification IDL
  • Spécification dun service de gestion de dates
  • pragma prefix "uqam.ca"
  • module date
  • typedef short Annee
  • typedef sequence ltAnneegt DesAnnees
  • enum Mois Janvier, Fevrier, Mars, Avril, Mai,
    Juin, Juillet, Aout,
  • Septembre, Octobre, Novembre, Decembre
  • typedef sequence ltMoisgt DesMois
  • enum JourDeSemaine Lundi,Mardi,Mercredi,Jeudi,V
    endredi,Samedi,Dimanche
  • typedef sequence ltJourDeSemainegt
    DesJoursDeSemaine
  • typedef unsigned short Jour
  • typedef sequence ltJourgt DesJours

20
Exemple de spécification IDL
  • struct Date
  • Jour le_jour
  • Mois le_mois
  • Annee l_annee
  • typedef sequenceltDategt DesDates
  • union DateMultiFormat
  • switch(unsigned short)
  • case 0string chaine
  • case 1 Jour nombreDeJours
  • default Date date
  • typedef sequenceltDateMultiFormatgt
    DesDateMultiFormats
  • exception ErreurInterne
  • exception MauvaiseDate DateMultiFormat date

21
Exemple de spécification IDL
  • interface Traitement
  • boolean verifierDate (in Date d)
  • JourDeSemaine calculerJourDeSemaine (in
    Date d)

  • raises(ErreurInterne,MauvaiseDate)
  • long nbJoursEntreDeuxDates (in Date d1, in
    Date d2) raises(MauvaiseDate)
  • void dateSuivante (inout Date d, in Jour
    nombreJours) raises(MauvaiseDate)

22
Exemple de spécification IDL
  • interface Convertisseur
  • Jour convertirDateVersJourDansAnnee (in Date
    d) raises(MauvaiseDate)
  • Date convertirChaineVersDate (in string
    chaine) raises(MauvaiseDate)
  • string convertirDateVersChaine (in Date d)
    raises(MauvaiseDate)
  • attribute Annee annee_courante
  • Date convertirJourDansAnneeVersDate (in Jour
    jour)
  • readonly attribute Annee base_annee 
  • Date convertirJourVersDate (in Jour jour)
  • Jour convertirDateVersJour (in Date d)
    raises(MauvaiseDate)
  • void obtenirDate (in DateMultiFormat dmf, out
    Date d) raises(MauvaiseDate)
  • interface ServiceDate Traitement,
    Convertisseur

23
Les éléments de IDL
  • Pragma fixe les identifiants désignant les
    définitions IDL à lintérieur du référentiel des
    interfaces.
  • module regroupe des définitions de types qui ont
    un intérêt commun.
  • types de données de base  void, short, unsigned
    short, long, unsigned long, long long (64 bits),
    unsigned long long, float, double, long double
    (128 bits), boolean, octet, char, string, wchar
    et wstring et fixed.
  • types de méta-données (TypeCode et any)
  • TypeCode stocke la description d'un type IDL.
  • Any stocke une valeur IDL d'un type en
    conservant son TypeCode.
  • constante. Exemple const double PI 3.1415.
  • alias (ou typedef) permet de créer de nouveaux
    types en renommant des types déjà définis.

24
Les éléments de IDL
  • énumération (ou enum) définit un type discret.
  • structure regroupement des champs.
  • Union  juxtapose un ensemble de champs
  • tableau un ensemble de taille fixe de données
    homogènes.
  • séquence ensemble de données homogènes dont la
    taille sera fixée à lexécution
  • exception spécifie une structure de données
    permettant à une opération de signaler les cas
    derreurs ou de problèmes pouvant survenir lors
    de son invocation. Une exception se compose de
    zéro ou plusieurs champs.
  • Interface opérations fournies par un type
    dobjets. Une interface peut hériter de plusieurs
    autres interfaces.

25
Les éléments de IDL
  • opération se définit par une signature qui
    comprend le type du résultat, le nom de
    lopération, la liste des paramètres et la liste
    des exceptions éventuellement déclenchées lors de
    linvocation. Un paramètre se caractérise par un
    mode de passage (in, out ou inout), un type et un
    nom formel.
  • attribut manière raccourcie dexprimer une
    paire dopérations pour consulter et modifier une
    propriété dun objet.

26
IDL et l'interoprabilité
  • Exemple de pré-compilation dun contrat IDL vers
    les langages cibles C et Java.
  • Les deux applications vont dialoguer à travers
    IIOP. On utilise un pré-compilateur IDL/C et un
    pré-compilateur IDL/Java).

27
De IDL à un langage de programmation
  • Traduction dune spécification IDL en un langage
    dimplantation.
  • Des règles existent pour les langages C, C,
    SmallTalk, Ada, Java et Cobol orienté objet.
  • Exemple
  • Construction OMG-IDL Projection en
    C Projection en Java
  • module M … namespace M … package M
  • class M …
  • préfixe M_
  • interface JI … class J  public virtual I
    … interface J extends I …
  • String char java.lang.String

28
Mise en place dune application CORBA
  • La définition du contrat IDL 
  • définir les objets composant lapplication à
    laide dune méthodologie orientée objet (e.g.
    OMT). Cette modélisation est ensuite traduite
    sous la forme de contrats IDL composés des
    interfaces des objets et des types de données
    utiles aux échanges dinformations entre les
    objets.
  • La pré-compilation du contrat IDL 
  • les interfaces des objets sont décrites dans des
    fichiers texte. Le pré-compilateur prend en
    entrée un tel fichier et opère un contrôle
    syntaxique et sémantique des définitions IDL
    contenues dans ce fichier. Le pré-compilateur
    peut aussi charger ces définitions dans le
    référentiel des interfaces.
  • La projection vers les langages de programmation
  • le pré-compilateur génère le code des souches qui
    sera utilisé par les applications clientes ainsi
    que le code des squelettes pour les programmes
    serveurs implantant ces types.

29
Mise en place dune application CORBA
  • L'implantation des interfaces IDL
  • en complétant et/ou en réutilisant le code généré
    pour les squelettes, le développeur implante les
    objets dans le langage de son choix
  • L'implantation des serveurs d'objets
  • le développeur doit écrire les programmes
    serveurs qui incluent l'implantation des objets
    et les squelettes pré-générés.
  • L'implantation des applications clientes des
    objets
  • le développeur écrit un ensemble de programmes
    clients qui agissent sur les objets en les
    parcourant et en invoquant des opérations sur
    ceux-ci.

30
Mise en place dune application CORBA
  • L'installation et la configuration des serveurs
  • cette phase consiste à installer dans le
    référentiel des implantations les serveurs pour
    automatiser leur activation lorsque des requêtes
    arrivent pour leurs objets.
  • La diffusion et la configuration des clients
  • une fois les programmes clients mis au point, il
    est nécessaire de diffuser les exécutables sur
    les sites de leur future utilisation et de
    configurer les sites clients pour qu'ils sachent
    où se trouvent les serveurs utilisés.
  • L'exécution répartie de lapplication.

31
Exemple d'application
  • Réalisation dune application de gestion
    dannuaires
  • Répertoires dadresses de personnes sur Internet.
  • Serveurs permettent de les créer, détruire et
    retrouver ces adresses.
  • 1. Le contrat IDL dun répertoire dadresses
  • include ltdate.idlgt
  • pragma prefix "xxxx.yy"
  • module annuaire
  • typedef string Nom
  • typedef sequenceltNomgt DesNoms
  • struct Personne
  • Nom nom
  • string informations string telephone
    string email string url dateDate
    date_naissance

32
Exemple d'application
  • interface Repertoire
  • readonly attribute string libelle
  • exception ExisteDeja Nom nom
  • exception Inconnu Nom nom
  • void ajouterPersonne (in Personne personne)
    raises(ExisteDeja)
  • void retirerPersonne (in Nom nom)
    raises(Inconnu)
  • void modifierPersonne (in Nom nom, in
    Personne personne) raises(Inconnu)
  • Personne obtenirPersonne (in Nom nom)
    raises(Inconnu)
  • DesNoms listerNoms ()
  • typedef sequenceltPersonnegt DesPersonnes

33
Exemple d'application
  • 2. La projection du contrat IDL
  • Le passage de ce contrat IDL dans des
    pré-compilateurs permet dobtenir les souches et
    les squelettes pour les langages cibles. La voici
    pour Java
  • package fr.lifl.annuaire
  • final public class Personne
  • public Personne()
  • public Personne(String _ob_a0, String _ob_a1,
    String _ob_a2, String _ob_a3, String _ob_a4,
    fr.lifl.date.Date _ob_a5)
  • nom _ob_a0
  • informations _ob_a1
  • telephone _ob_a2
  • email _ob_a3
  • url _ob_a4
  • date_naissance _ob_a5

34
Exemple d'application
  • public String nom
  • public String informations
  • public String telephone
  • public String email
  • public String url
  • public fr.lifl.date.Date date_naissance

35
Les différents ORB
VisiBroker Inprise www.inprise.com Orbix IONA w
ww.iona.com SOMObjects IBM www.software.ibm.com/a
d/somobjects Orbacus Object Oriented www.ooc.com
Concepts CORBAPlus Expertsoft www.expertsoft.com
/Products/CORBAC/corba.html
36
Cycle de développement CORBA
IDL
1
Compilation IDL/Java
2
Code Client
3
4
6
SKEL
STUB
Compilation/Génération
Compilation/Génération
5
7
Application Serveur
Application Client
37
Exemple
  • 1. Interface en IDL
  • module Convertisseur
  • interface Euro
  • attribute double taux
  • attribute string devise
  • double toEuro(in double devise)
  • double toDevise(in double euro)

38
Compilation de l IDL
  • 2. Compilation de l IDL Génération du stub et
    du skeleton
  • Stub utilsée par la partie client de
    l application. Il fournit un proxy qui relaie
    les apples des objets en appels distants
  • Skeleton Classe de base de l objet distribué
  • IDL2JAVA Convertisseur.idl

39
Compilation de l IDL
  • Plusieurs fichiers vont être générés
  • Euro.java Interface Euro
  • EuroHelper.java Méthodes d utilisation des
    objets Euro.
  • Ex bind().
  • EuroHolder.java Outils de passage de paramètres
    avec les
  • méthode de l objet Euro.
  • _st_Euro.java Stub de l objet Euro.
  • _EuroImplBase.java Skeleton de l objet Euro.
    Calsse de base
  • de l objet

40
Compilation de l IDL
  • L interface Euro.java
  • package Convertisseur
  • public interface Euro extends org.omg.CORBA.Object
  • public void taux( double taux )
  • public double taux()
  • public void devise ( java.lang.String devise )
  • public java.lang.String devise()
  • public double toEuro(double devise )
  • public double toDevise( double eurO )

41
Compilation de l IDL
  • Le skeleton _EuroImplBase
  • package Convertisseur
  • abstract public class _EuroImplBase extends
    org.omg.CORBA.portable.Skeleton implements
    Convertisseur.Euro
  • protected Convertisseur.Euro _wrapper null
  • public Convertisseur.Euro _this() return
    this
  • protected _EuroImplBase(java.lang.String
    name) super(name)
  • public _EuroImplBase()
  • …

42
Implantation de l objet
  • 3. Implantation de l objet On implante
    linterface Euro.
  • package Convertisseur
  • public class EuroImpl extends _EuroImplBase
  • Construction des objets
  • public EuroImpl(java.lang.String name)
    super(name)
  • public EuroImpl() super()

43
Implantation de l objet
  • Taux de conversion
  • private double _taux
  • public void taux(double taux) _tauxtaux
  • public double taux() return _taux
  • Devise utilisée
  • private String _devise
  • public void devise(java.lang.String devise)
    _devisedevise
  • public java.lang.String devise() return
    _devise

44
Implantation de l objet
  • Implémentation des opérations de conversion
  • public double toEuro(double devise) return
    devise / _taux
  • public double toDevise(double euro) return
    euro _taux

45
Réalisation du serveur CORBA
  • 4. Réalisation du serveur CORBA
  • Mettre lobjet Euro à la disposition des
    clients.
  • Initialier l ORB
  • ORBORB_init() Se connecter à l ORB.
  • Initialiser le BOA
  • ORBBOA_init() Mettre l objet à la
  • diposition des clients.
  • Création de l objet
  • Référencer l objet
  • BOAobj_is_ready() Référencer l objet
  • au niveau du BOA
  • Mise en attente
  • BOAImpl_is_ready() Mettre l application
  • en mode écoute.

Initialiser l ORB
ORB_Init()
Initialiser le BOA
BOA_Init()
Créer l objet
Enregistrer l objet
Obj_is_ready()
Mise en attente
Impl_is_ready()
46
Réalisation du serveur CORBA
  • Serveur de l objet Euro ServeuerConvertisseurEur
    o.java
  • package Convertisseur
  • import java.util.
  • public class ServeurConvertisseurEuro
  • public static void main(String args)
  • try org.omg.CORBA.ORB orb
    org.omg.CORBA.ORB.init()
  • org.omg.CORBA.BOA boa orb.BOA_init()
  • Convertisseur.Euro implObject new
    EuroImpl("ConvertisseurEuro")
  • boa.obj_is_ready(implObject)
  • System.out.println(implObject " is
    ready.")
  • boa.impl_is_ready()
  • catch (Exception e) e.printStackTrace()

47
Compilation du serveur
  • 5. Compilation du serveur. On compile avec javac
    en integrant les fichiers
  • Interface Euro.java
  • Stub _st_Euro.java
  • Skeleton _EuroImplBase.java
  • Classe Holder EuroHolder.java
  • Classe Helper EuroHelper.java
  • Serveur SereveurConvertisseurEuro.java
  • ORB vbjorb.jar

48
Réalisation du client
  • 6. Réalisation du client
  • Initialiser l ORB
  • ORBORB_init() Se connecter à l ORB
  • Connexion à l objet
  • bind() Établit une communication
  • avec l objet serveur.
  • Utilisation de l objet

Initialiser l ORB
ORB_Init()
Connexion à l ORB
bind()
Utilisation Appel des méthodes, ...
49
Réalisation du client
  • Exemple de code de client FrameConvertisseurEuroC
    omplet.java
  • package Convertisseur
  • ...
  • public class FrameConvertisseurEuroComplet
    extends JFrame
  • .... Construction d'une interface graphique
  • org.omg.CORBA.ORB orb
  • Euro euro
  • public FrameConvertisseurEuroComplet()
  • try ...
  • orb org.omg.CORBA.ORB.init()
  • euro EuroHelper.bind(orb,"ConvertisseurEuroJav
    a")
  • catch (Exception e) e.printStackTrace()

50
Réalisation du client
  • void buttonInterroDevise_actionPerformed(ActionE
    vent e)
  • textNomDevise.setText(euro.devise())
  • void buttonDefinirDevise_actionPerformed(ActionE
    vent e)
  • euro.devise( textNomDevise.getText())
  • labelDevise.setText(textNomDevise.getText())
  • void buttonDefinirParite_actionPerformed(ActionE
    vent e)
  • euro.taux( Double.valueOf(textParite.getText()
    ).doubleValue() )
  • void buttonInterroParite_actionPerformed(ActionE
    vent e)
  • textParite.setText(Double.toString(euro.taux()
    ))
  • …

51
Compilation du client
  • 7. Compilation du client. On compile avec javac
    en integrant les fichiers
  • Fichiers GUI du client FrameConvertisseurEur
    oComplet.java
  • Stub _st_Euro.java
  • Classe Holder EuroHolder.java
  • Classe Helper EuroHelper.java
  • ORB vbjorb.jar

52
Exécution de lapplication
  • Exécution de lapplication.
  • Exécuter le démon CORBA (orbixdj.exe ou osagent )
    sur toutes les machines qui proposent des objets
    CORB
  • Mise à jour d une liste dles objets chargée et
    disponibles
  • Taulérance aux pannes
  • Réaprtition de charges
  • Lancement de lapplication client.

5. Accès périodique (Tolérance aux pannes)
1. Enregistrement de l objet serveur
OS (SMART) Agent
Client
4. Dialogue entre client et serveur
2. Demande de connexion à un objet distant
3. Réponse Référence de l objet
Client
About PowerShow.com