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.