[go: up one dir, main page]

Hoppa till innehållet

Interface Definition Language

Från Wikipedia

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 datatyper för anropsargument, angivande om ett argument är in- eller utdata och datatyper för svaret.
  • 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 statusnod; };

 /* Gränssnitt */
 interface Kundhanterare {
    /* metod sokKund söker efter kundpost som har ett unikt kundnummer, Kundpost returneras
       Returkod anger om sökningen lyckades eller ej.
       Undantag BlockeradKund 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 (det vill säga Sun Microsystems Unix) och ett Cobol-program skrivet 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.

IDL och CORBA

Efter kompilering för man så kallad skelett och stubbe. Stubbkällkod anropas av klientprogrammet, det vill säga av det programmet som anropar metoderna sokKund() och blockeraKund() i exemplet ovan. Skelettkällkod används av serverprogrammet för att ta emot anropen.