Interface Definition Language
Utseende
IDL, Interface Definition Language är ett programspråk som används för att beskriva syntax för anrop mellan program, komponenter eller objekt.
IDL som definieras av CORBA är standardiserat och består av begrepp som:
- moduler som definierar namnrymd som förhindrar namnkollisioner och strukturerar begrepp
- intraface som grupperar metoder
- metodsyntaxen för anrop med anropsargumenttyper, angivande om ett argument är in- eller utdata och returtyper
- structure som aggregerar datatyper till högre nivås datatyper
- unioner som tillåter alternativa typrepresentationer
- enum som ger uppräkneligt värdeförråd för numeriska datayper
- typedef typdefinitioner
- elementära datatyper som sträng, heltal, flyttal, boolskt värde.
- exception, undantag
Exempel på en IDL-specifikation:
module bank {
/* Struktur som beskriver en kund */ struct Kund { string forNamn; /* kundens förnamn */ string efterNamn; /* kundens efternamn */ string kundNummer; /* kundnummer */ };
/* Returkod och dess värden */ enum ReturKod { OK, KUND_SAKNAS };
/* Undantag */ exception BlockeradKund{ unsigned int statusKod; };
/* Gränssnitt */ interface kundHanterare { /* metod sokKund söker efter kundpost som har ett unikt kundnummer, Kund-post returneras Returkod anger om sökningen lyckades eller ej. Undantag BlickeradKund kastas om kunden var blockerad */ ReturKod sokKund(in string kundNummer, out Kund) raises(BlockeradKund);
/* Blockera kunden som pekas ut med kundNummer och ange orsaken med statusKod */ void blockeraKund(in string kundNummer, in unsigned int statusKod); };
};
IDL-specifikationen kompileras med en kompilator för tillämpningens programspråk och miljö. Om till exempel gränssnittet används för samarbete mellan ett program skrivet i C++ för operativsystemet Solaris (dvs SunUnix) och ett Cobol-program skrivert för IBM AS/400, så kommer man kompilera samma IDL-specifikation med en IDL/C++ kompilator för Solaris och med IDL/Cobol kompilator för AS/400.