L'IDL CORBA

Definition:

C'est un language purement descriptif, qui permet de définir les echanges et les interactions entre le client et le serveur, en faisant abstraction des languages de programmation.

L'interface:

Une interface est constituée d'un ensemble de prototypes de methodes permettant de definir une vue fonctionnellesur un objet, qui sera exposée par le serveur pour que le client puisse interagir avec lui.

Regle: Un client  manipule un objet un objet serveur par le biais de son  inetrface.

Heritage:

Cette héritage consiste en héritage de déclaration d'opérations ou d'attributs.

Une interface hérite que de la declaration des methodes de l'interface mère.

On peut redefinir une methode de l'interface mère dans l'interface enfant.

On peut aussi redefinir les constantes, types et noms des exceptions que contient une interface mère par l'interface enfant.

Principes de IDL:

Constitution d'un fichier IDL:

Le module:

C'est un ensemble de declarations de constantes, de types, d'exceptions , d'interfaces , de sous modules imbriqués.

Les types elementaires

Les types flottants et entiers

Type IDL Etendue et Precision
octet Entier sur 8 bits
short Entier signé
unsigned short Entier non signe
long Entier signé
unsigned long Entier non signe
long long Entier signé
unsigned long, long Entier non signe
float Flottant IEEE simple precision 32 bits
double Flottant IEEE simple precision 64 bits
long double Flottant IEEE double precision etendue: au moins 80 bits

Les caracteres et les chaines:

IDL emploi tous les caracteres et chaines caracteres ASCII ou UNICODE.

VOID

C'est un mot clé qui permet de definir des fonctions sans retour de valeurs.

BOOLEAN

Ce type permet de specifier un parametre booléan et pouvant avoir deux valeur: TRUE ou FALSE

Any

C'est un type qui peut contenir n'importe quel type de parametre dans IDL

Les types Avancés

Definition de Type

Le mot cle Typedef permet de definir de nouveaux types à partir de type elementaires ou avancés et qui pourront etre exploités pour la creation d'autre types

typedef newtype NomType;

typedef string <20> chaine;

Type Sequence

C'est un tableau à une dimension et dont les elements sont du meme type ou de type derivé.

La sequence peut etre borné ou non.

typedef sequence<typenouveau> nomType;

Les Tableaux

typedef float flottant[10];

typedef string chaine[10][10];

Le Type Struct

definit une structure qui correspond à un agrégat de données et regroupe ainsi differents elements.

struct Action{

   string NomAction;

   date  dateAction;

   long ValeurAction;

};

Le Type enum

Il definit une plage de valeur possibles et l'ensemble des identifiants utilisables.

enum Couleur {bleu, blanc, rouge}

enum Carte {as, roi, valet, reine}

Le Type Union

C'est un type struct mais seuleument avec un seul champ dont la valeur peut varier .

union nomunion switch (type) {

case valeur1 :  type1 identifiant1;

case valeur2 :  type2 identifiant2;

default : typeDefaut identifiantDefaut;

};

Le Type interface

Constituants:

module nomModule {

  interface nomIterface{

     definition de constantes

     definition de types

     definition d'exceptions

     definition d'attributs

     definition de methodes

 };

};

Les attributs

Ce sont les données membres d'un objet.

[readonly] attrribute typeattribut nomAttribut

Le mot clé readonly. specifie que cet attribut est declaré seulement en lecture.

Les Methodes:

[oneway] typeRetour nomMethode(directionPraram typeParam1, ........) raises (Exception1,.......);

Le mot clé oneway: Les methodes one oneway sont utiles dans le cas ou le traitement demende est du type Batch (en lot), (lot d'impression, longues mise à jour).

Le passage des parametres :

l'heritage d'interface:

InetrfaceFille : Module1::Interface13

l'interface fille herite des methodes de l'interface 13 du module1

Rq: l'heritage ne concerne que les definitions des methodes et non leur implementation.

La declaration avancée (forward)

IDL permet aux interfaces de se referencer entre elles.

module Exemple {

   interface A{

     void useB(in B oneB);

   };

   interface B{

      void useA(in A oneA);

    };

};

Le type Exception

Les exceptions correspond à un mode de traiter des erreurs.

Les exceptions utilisateurs:

exception nomException{

données membres

};

Les exceptions systemes

ce sont les exceptions standards pouvant etre renvoyes par n'importe quel import à une methode distante definies dans un module corba.