Laboratoire dInformatique du Littoral - PowerPoint PPT Presentation

1 / 65
About This Presentation
Title:

Laboratoire dInformatique du Littoral

Description:

Informatique r partie & approche objet : cadre conceptuel unique allant de l'analyse jusqu'au d ploiement des applications distribu es. Middleware (CORBA) ... – PowerPoint PPT presentation

Number of Views:41
Avg rating:3.0/5.0
Slides: 66
Provided by: mel76
Category:

less

Transcript and Presenter's Notes

Title: Laboratoire dInformatique du Littoral


1
Laboratoire dInformatique du Littoral
Le middleware CORBA (1)
N. Melab melab_at_lil.univ-littoral.fr
2
Références
  • R. Orfali, D. Haskey et J. Edwards. Objets
    Répartis Guide de Service. Intl. Thomson
    Publishing France, Paris, 1996.
  • J-M. Geib, C. Gransart et P. Merle. Corba, Des
    concepts à la pratique. InterEditions, 1997.
  • ORBacus for C and Java, Document technique
    version 4.0.3.
  • Object Management Group. The Common Object
    Request Broker Architecture and Specification.
    OMG TC Document 95-7-X, Juillet 1995. www.omg.org

3
Motivations (1)
  • Décentralisation
  • Répartition des ressources matérielles
    logicielles
  • matérielles processeurs, mémoires et
    périphériques
  • logicielles données (fichiers) et applications
  • Partage de ressources
  • Evolution technologique et croissance du ratio
    performance/coût des réseaux.

Problèmes de communication et dhétérogénéité
4
Motivations (2)
  • Coopération
  • Coopération des applications patrimoines
  • Nouvelles technologies
  • Mise à jour des applications patrimoines

Problèmes dinteropérabilité et dintégration
5
Communication
  • Applications réparties sur des sites distants
  • Différents paradigmes de communication ?
  • Passage de messages PVM, MPI, ...
  • RPC OSF/DCE-IDL, Sun/RPCL, ...
  • Mémoire virtuellement partagée LINDA, ...

Paradigmes non accessibles directement via les
langages de programmation
6
Hétérogénéité
  • Trouver la meilleure combinaison des technologies
  • A différents niveaux
  • Modèles et langages de programmation
  • Systèmes dexploitation
  • Matériel PCs, Stations, Clusters, MPP, etc.
  • Protocoles de communication
  • En général, résolu par les mécanismes de
    communication par utilisation du format de
    données XDR

7
Intégration
  • Intégration à deux niveaux
  • Intégration des nouvelles technologies
  • Perpendiculaire au problème dintégration
  • Intégration des applications patrimoines avec
    les nouvelles technologies

8
Interopérabilité
  • Communication entre systèmes (applications)
    développé(e)s par des tiers
  • Définition de normes pour léchange des données
    et de services (formats universels, protocoles,
    )

9
Lapproche objet
  • Différents environnements basés sur les 3
    paradigmes cités résolvent les problèmes de
    communication et dhétérogénéité
  • Lapproche objet solution aux problèmes
    dintégration et dinteropérabilité
  • Propriété dencapsulation
  • IDL Interface Definition Language
  • Informatique répartie approche objet cadre
    conceptuel unique allant de lanalyse jusquau
    déploiement des applications distribuées
  • Middleware (CORBA)

10
Objets distribués
  • Spécification en utilisant IDL
  • Déploiement en objets répartis sur sites distants
  • Infrastructure de communication (ORB)
  • Communication par RMI Remote Method Invocation
  • RMI version étendue de RPC
  • Utilisation de souches de communication
  • Souche représentant local dun objet distant

11
Plan
  • LObject Management Group (OMG)
  • IDL Langage de spécification
  • ORB Bus de communication entre objets
  • Méthodologie de développement et application

12
LObject Management Group
Consortium créé en 1989 actuellement plus de 850
membres
Objectif faire émerger des standards pour
lintégration dapplications distribuées
hétérogènes et la réutilisation de composants
logiciels
13
OMG Objectifs
  • Interopérabilité entre plusieurs langages
  • Transparence des invocations
  • Invocation statique et dynamique
  • Système auto-descriptif
  • Activation automatique
  • Interopérabilité entre bus (GIOP, IIOP, etc)

14
OMA larchitecture globale
Bus dobjets répartis
15
Plan
  • LObject Management Group (OMG)
  • IDL Langage de spécification
  • ORB Bus de communication entre objets
  • Méthodologie de développement et application

16
Le langage OMG-IDL
  • Coopération entre fournisseurs et utilisateurs de
    services
  • Expression sous forme de contrats
  • Séparation de linterface de limplémentation
  • Contrat ensemble dinterfaces spécifiées avec
    IDL
  • Projection en souche (côté client) et squelette
    (côté serveur)
  • Précompilateur IDL

17
Caractéristiques
  • Langage objet de spécification dinterfaces (et
    non pas dimplantation) partie de C étendue
  • Indépendant de tout langage de programmation
  • Fortement typé (passage de paramètres)
  • Héritage multiple et répété
  • Projection automatique dans plusieurs langages de
    programmation C, Smalltalk, Cobol, AdaObjet,
    C, Java, etc.

18
Eléments du langage (1)
  • Commentaires
  • Même chose quen C
  • Exemples
  • // Ceci est un commentaire court
  • / Ceci est un commentaire pluuuuuuuuuuuuuuuuuuuu
  • uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuus long
    /
  • Identificateurs
  • Séquences de caractères alphabétiques, chiffres
    et du caractère  _ 
  • Premier caractère lettre
  • Pas de différence entre majuscules et minuscules

19
Eléments du langage (2)
  • Espaces de définition
  • Module contient tout type de définition
  • Exemple
  • module Banque
  • const double TAUX 5.25
  • typedef unsigned sequenceltstringgt
    DesAgences
  • // Autres définitions

20
Eléments du langage (3) Types de données
21
Eléments du langage (4)
  • Constantes
  • Mot-clé const comme en C
  • Exemples
  • const double PI 3.14159
  • const string UneConstante une chaîne de
    caractères
  • const short TAILLE1 10
  • const long TAILLE2 TAILLE1 2
  • Définition de types
  • Mot-clé typedef comme en C
  • Exemples
  • typedef unsigned short Jour
  • typedef unsigned short Mois
  • typedef unsigned short Annee

22
Eléments du langage (5)
  • Enumérations
  • Mot-clé enum comme en C
  • Exemple
  • enum JoursOuvrables Lundi, Mardi, Mercredi,
    Jeudi, Vendredi
  • Structures
  • Mot-clé struct comme en C
  • Exemple
  • struct Date
  • Jour le_jour
  • Mois le_mois
  • Annee l_annee

23
Eléments du langage (6)
  • Unions
  • Mot-clé union comme en C
  • Exemple
  • union DateVariee switch (long)
  • case 1
  • Date format_date
  • case 2
  • string format_chaine
  • Default
  • Jour nb_jours

24
Eléments du langage (7)
  • Tableaux
  • Exemples
  • typedef Date10 tab_dates
  • typedef floatTAILLE1 TAILLE2 matrice
  • Tableaux dynamiques séquences
  • Mot-clé sequence
  • Exemple
  • typedef sequenceltlonggt DesNombresPremiers
  • typedef sequenceltJourgt DesJours
  • typedef sequenceltDategt DesDates

25
Eléments du langage (8)
  • Interfaces
  • Une interface contient des définitions de types
    et constantes, des attributs et des opérations
  • Exemple
  • interface Compte
  • attribute float valeur
  • void deposer (in float somme)
  • void retirer (in float somme)
  • // Autres opérations
  • typedef sequenceltComptegt DesComptes

26
Eléments du langage (9)
  • Opérations
  • Caractéristiques
  • Nom identificateur unique
  • Paramètres mode de passage (in, out, inout),
    type et nom
  • Type du résultat void si pas de retour
  • Mode dinvocation oneway si opération
    asynchrone
  • Liste des exceptions à la C
  • Exemple
  • exception problem string raison
  • oneway void retirer (in float somme) raises
    problem
  • Pas de surdéfinition dopérations

27
Eléments du langage (10)
  • Attributs
  • Mot-clé attribute
  • Caractéristiques
  • Mode
  • Par défaut, les attributs peuvent être consultés
    et modifiés
  • readonly accessibles en lecture seulement
  • Nom de lattribut
  • Exemple
  • readonly attribute Annee annee_courante

28
Eléments du langage (11)
  • Héritage
  • Exemple
  • interface Compte
  • attribute float valeur
  • void deposer (in float somme)
  • void retirer (in float somme)
  • // Autres opérations
  • interface CompteLivret Compte
  • readonly attribute float Taux
  • Lhéritage peut être multiple et répété

29
Constructions du langage (résumé)
  • Modules module NAME ...
  • Interfaces interface NAME ...
  • Constantes const TYPE NAME
    VALEUR
  • Types énumérés enum NAME V1, ..., Vn
  • Nouveaux types typedef DECL NAME
  • Structures struct NAME DECL
  • Unions union NAME switch
    (TYPE)
  • Attributs readonly attribute
    TYPE NAME
  • Opérations TYPE NAME (ARGs)
    raises ( ... )
  • in
    inout out TYPE NAME
  • Exceptions exception NAME ...

30
Exemple
module GestionBancaire struct
FicheClient string nom string adresse
interface compte
attribute FicheClient client
readonly attribute float balance
void faireDepot (in float f)
oneway float faireRetrait (in
float f)
interface livret compte
readonly attribute float taux
// Dautres définitions et
interfaces
31
(No Transcript)
32
Projection dIDL (2)
  • Liaison vers un langage donné conformément aux
  • règles définies par lOMG pour ce langage
  • Ces règles de traduction concernent
  • Les types de base IDL
  • Les constructeurs de type enum, typedef,
    sequence, etc.
  • Les références vers les objets
  • Linvocation des opérations
  • La manipulation des exceptions
  • Laccès aux attributs
  • LAPI de lORB.

33
Types de base
34
Autres règles de projection (1)
35
Autres règles de projection (2)
36
Exemple PerfectNumbers.idl
interface PerfectNumbers typedef
sequenceltlonggt PERFECTS boolean
is_perfect_number (in long number) PERFECTS
all_perfects (in long number)
37
Exemple PerfectNumbers.java
public interface PerfectNumbers extends
org.omg.CORBA.Object public boolean
is_perfect_number (int number) public int
all_perfects (int number)
38
Exemple PerfectNumbers.h
class PerfectNumbers virtual public
CORBA_Object // typedef
OBFixSeqltCORBA_Longgt PERFECTS virtual
CORBA_boolean is_perfect_number (CORBA_Long
number) virtual PERFECTS all_perfects
(CORBA_Long number)
39
Passage de références en C
40
Exemple
interface PerfectNumbers typedef
sequenceltlonggt PERFECTS boolean
is_perfect_number (in long number) PERFECTS
all_perfects (in long number)
41
Plan
  • LObject Management Group (OMG)
  • IDL Langage de spécification
  • ORB Bus de communication entre objets
  • Méthodologie de développement et application

42
OMG le modèle client/serveur objet
43
Le module CORBA
  • Le module CORBA contient
  • les définitions des API des composantes du bus
  • les définitions IDL des protocoles
    dinteropérabilité entre bus CORBA (IIOP, GIOP,
    etc.)
  • Deux interfaces de base
  • Object
  • ORB

44
Linterface Object (1)
  • Encapsulation des références dobjets CORBA
  • Héritée par les interfaces IDL définies dans tout
    contrat
  • Opérations dobtention des méta-données
    caractérisant un objet
  • Opérations de base de manipulation de ces
    références
  • Opérations relatives à linvocation dynamique

45
Linterface Object (2)
interface Object // Non standardisée
dépend de limplantation du bus
ImplementationDef get_implementation()
InterfaceDef get_interface() boolean
is_nil() Object duplicate() void
release() boolean is_a(in string
logical_type_id) boolean non_existent()
boolean is_equivalent(in Object other_object)
unsigned long hash(in unsigned long maximum)
46
Linterface ORB
  • Cest un fourre-tout
  • Elle permet
  • dobtenir les références des objets notoires
  • de convertir les références d objets en chaînes
    de caractères et vice versa
  • dobtenir les références des adaptateurs dobjets
  • dinstancier des méta-données nécessaires à
    linvocation dynamique des objets
  • manipuler les requêtes invoquées dynamiquement

47
Initialisation du bus
  • module CORBA
  • typedef string ORBid
  • typedef sequenceltstringgt arg_list
  • ORB ORB_init(inout arg_list argv, in ORBid
    orb_identifier)
  • public static void main (String args)
  • try
  • // initialisation du bus CORBA pour un
    processus client
  • org.omg.CORBA.ORB orb
    org.omg.CORBA.ORB.init (args,null)
  • ...

48
Les objets notoires (1)
  • Objets primordiaux permettant de découvrir les
    objets disponibles sur le bus
  • Trois objets notoires
  • Référentiel des interfaces (Interface Repository)
  • Services Nommage et Vendeur annuaires
    permettant de retrouver les références de tout
    objet sur le bus CORBA

49
Les objets notoires (2)
  • interface ORB
  • typedef string ObjectId
  • typedef sequenceltObjectIdgt ObjectIdList
  • ObjectIdList list_initial_services()
  • exception InvalidName
  • Object resolve_initial_references(in ObjectId
    identifier)
  • raises
    (InvalidName)

50
Les objets notoires (3)
  • ...
  • // Obtenir toute la liste des objets notoires
  • ObjectIdList liste orb.list_initial_services()
  • // Obtenir un seul objet notoire
  • try
  • Object obj2 resolve_initial_references(Name
    Service)
  • catch (org.omg.CORBA.ORBPackage.InvalidNmae ex)
  • System.err.println(Can not resolve
    NameService)
  • return

InterfaceRepository
TradingService
51
Conversion dobjets
  • // Le serveur fait
  • HelloImpl hello new HelloImpl ()
  • // Diffusion de la référence de l objet
  • String chaineIOR orb.object_to_string
    (hello)
  • System.out.println ("IOR de l objet "
    chaineIOR)
  • // Le client fait
  • org.omg.CORBA.Object obj orb.string_to_object
    (args0)
  • Hello hello HelloHelper.narrow(obj)
  • // Invocation de l objet distant
  • hello.hello()

52
Plan
  • LObject Management Group (OMG)
  • IDL Langage de spécification
  • ORB Bus de communication entre objets
  • Méthodologie de développement et application

53
Méthodologie de développement
  • Ecrire le contrat IDL (appli.idl) ensembles
    dinterfaces en IDL
  • Générer les souches/squelettes de communication
  • et les interfaces (compilateur IDL/langage
    dimplantation)
  • Ecrire les implantations des interfaces
  • Ecrire les codes du serveur et du client

54
Compilation et exécution (Java)
  • Quelques variables denvironnement
  • setenv CLASSPATH ltRépertoireORBgt/lib/OB.jar
    classes
  • setenv PATH ltRépertoireORBgt/bin/ltJDKgt/binPATH
  • Génération des souches/squelettes
  • mkdir ltnomPackagegt
  • jidl ltnomPackagegt.idl --package ltnomPackagegt
  • Compilation des sources et souches/squelettes
  • mkdir classes
  • javac -d classes .java ltnomPackagegt/.java
  • Exécution du serveur et du client
  • java Server
  • java Client IOR

55
Le bus ORBacus
  • Conçu par la société Object-oriented Concepts,
    Inc.
  • gratuit pour utilisation non commerciale
  • les sources sont entièrement disponibles
  • Environnement CORBA 2.x ouvert
  • langages C et Java
  • OS Solaris, Linux, Windows 95/NT, AIX, SGI et
    HP-UX
  • Services
  • Sécurité, Vendeur, Nommage, Evénement et
    Propriétés
  • Disponibilité http//www.ooc.com

56
Le cas du bus ORBacus
  • ORBacus intègre 4 générateurs de code
  • idl IDL à C
  • jidl IDL à java
  • hidl IDL à HTML
  • ridl IDL à RTF
  • irgen IDL au Référentiel dinterfaces (IR) C
  • Synopsis (-h, --h option daide)
  • idl options fichiers_idl
  • jidl options fichiers_idl
  • hidl options fichiers_idl
  • ridl options fichiers_idl
  • irgen nom

57
Lapplication  Hello World 
HelloImpl
58
Génération des souches et interfaces Java pour le
fichier Hello.idl
59
Linterface et les classes Hello
  • Hello.java interface pour le type Hello
  • public interface Hello extends
    org.omg.CORBA.object
  • public void hello()
  • HelloHelper.java classe utilitaire pour le type
    Hello
  • final public class HelloHelper
  • public static Hello narrow(org.omg.CORBA.o
    bject obj)
  • méthodes insert, extract, type, id,
    read, write ...
  • HelloHolder.java pour le passage out et inout
  • final public class HelloHolder implements
  • public Hello value
  • méthodes constructeurs, _ read, _write,
    _type ...

60
Les classes souche et squelette
  • StubForHello.java implantation de la souche
  • sert à envoyer les requêtes
  • invisible pour les programmeurs
  • instanciée automatiquement par HelloHelper
    (narrow)
  • _HelloImplBase.java implantation du squelette
  • recoit et décode les requêtes
  • doit être héritée par limplantation

61
Limplantation Java de Hello
  • // HelloImpl implante linterface IDL Hello et
    hérite donc du squelette _HelloImplBase généré
    par le compilateur jidl
  • public class HelloImpl extends HelloImplBase
  • public void hello()
  • System.out.println ("JAVA HelloImpl.hello()
    Hello World !")

62
Le programme HelloServer
  • import org.omg.CORBA.
  • import java.io.
  • import hello.
  • public class HelloServer
  • // Fonction principale implantant un
    processeur serveur CORBA
  • public static void main (String args)
  • try
  • // initialisation du bus CORBA pour un
    processus serveur
  • org.omg.CORBA.ORB orb
    org.omg.CORBA.ORB.init (args,null)
  • org.omg.CORBA.BOA boa orb.BOA_init
    (args,null)
  • // Création de lobjet dimplantation
    Hello.
  • HelloImpl hello new HelloImpl ()
  • // Diffusion de la référence de lobjet
  • String chaineIOR orb.object_to_string
    (hello)
  • System.out.println ("IOR de lobjet "
    chaineIOR)

63
Le programme HelloServer (suite)
  • // Mettre le serveur en attente des requêtes
    CORBA
  • boa.impl_is_ready (null)
  • System.exit(0)
  • // En cas de problème lié à lutilisation de
    CORBA
  • catch (org.omg.CORBA.SystemException ex)
  • System.err.println(ex.getMessage())
  • ex.printStackTrace()
  • System.exit(1)

64
Le programme HelloClient
  • public class HelloClient
  • public static void main (String args)
  • try
  • // initialisation du bus CORBA pour un
    processus client
  • org.omg.CORBA.ORB orb
    org.omg.CORBA.ORB.init (args,null)
  • // Création de la souche Java
    référençant lobjet Hello.
  • org.omg.CORBA.Object obj
    orb.string_to_object (args0)
  • Hello hello HelloHelper.narrow(obj)
  • // Invocation de lobjet distant
  • hello.hello()

65
Le programme HelloClient (suite)
  • System.exit(0)
  • // En cas de problème lié à lutilisation de
    CORBA
  • catch (org.omg.CORBA.SystemException ex)
  • System.err.println(ex.getMessage())
  • ex.printStackTrace()
  • System.exit(1)
Write a Comment
User Comments (0)
About PowerShow.com