Application Programming Interface

Från Rilpedia

Hoppa till: navigering, sök
Wikipedia_letter_w.pngTexten från svenska WikipediaWikipedialogo_12pt.gif
rpsv.header.diskuteraikon2.gif

Ett API eller Application Programming Interface är en regeluppsättning för hur en viss programvara kan kommunicera med annan programvara. Regeluppsättningen beskrivs i princip alltid som en uppsättning funktionsanrop (APIets kontrakt) som under ordnade former ger tillgång till en viss funktionalitet. Man säger ofta att man kapslar in funktionaliteten bakom ett API.

Innehåll

Definition

De flesta kommersiella programvaror i dagens läge är applikationer som knyter samman annan mjukvarufunktionalitet i olika former och skapar en meningsfull helhet, och denna sammanknytning sker med hjälp av APIer. APIer ger alltså möjlighet att på ett strukturerat sätt återanvända redan utvecklad och kvalitetssäkrad mjukvara som har kapslats in i någon form av kodbibliotek (eng library). I någon mening kan man säga att ett API är de yttre attributen för en abstrakt datatyp.

Ett välformat API är till sin natur litet 'abstrakt' i den meningen att det beskriver en funktionalitet utan att berätta något om hur denna funktionalitet implementeras. (Ett API som förutsätter något om den underliggande implementationen sägs vara icke välformat.)

Olika klasser av APIer

Man kan särskilja två olika typer av APIer:

  • APIer som ger tillgång till olika typer av systemresurser, ofta utan att fästa avseende vid vilket operativsystem programmet ska användas på. Exempel:
    • Skrivare
    • Filhantering
    • Grafikhantering
    • Radiokretsar (exempelvis WLAN eller Bluetooth)
I detta fall talar man om drivrutins-APIer. APIet används som ett lager mellan högnivåprogrammering och lågnivåresurser (systemresurser).
  • APIer som ger tillgång till högnivåfunktionalitet som återanvänds på ett eller annat sätt. Här rör det sig ofta om mjukvara som tillhandahålls av andra leverantörer för olika typer av datahantering eller beräkningar. Exempel:
    • Matrisberäkningsbibliotek
    • APIer för att sända email
I detta fall talar man ofta om kommersiella APIer eller högnivå-APIer.

Implementation av ett API

Den programkod som utför det API:et är tänkt att utföra för kallas APIets implementation. Det existerar ofta ett flertal implementationer för ett visst API, exempelvis för olika operativsystem såsom Windows, olika UNIX-dialekter och MacOS. (MacOS X är i själva verket också en UNIX-dialekt). Ett API kan implementeras i snart sagt vilket programspråk som helst i vilken operativsystemsmiljö som helst, så länge som det är möjligt för en programmerare att använda det.

Generella och specifika APIer

Man skiljer också på generella och specifika APIer.

  • Ett generellt API beskriver ett generellt sätt att använda en viss systemresurs eller annan resurs. Exempel är printer-APIer och grafik-APIer såsom OpenGL. Denna typ av APIer tillåter en mjukvaruutvecklare att skapa en programvara som är väldigt flexibel och som kan flyttas mellan olika hårdvaruarkitekturer och operativsystem utan att ändras.
  • Ett specifikt API ger tillgång till en specifik resurs, ofta en hårdvaruresurs såsom ett specialiserat GPS-chip eller liknande. Denna typ av APIer är vanliga på mer specialiserade hårdvaruarkitekturer.

Välkända API:er

APIer som de flesta av oss kommer i kontakt med på ett eller annat sätt, exempelvis när vi installerar ett nytt program på vår dator, är

APIets kontrakt

Kontraktet för ett API är en högnivåbeskrivning av hur själva APIet skall fungera. I och med att man definierar ett API i kontraktsform möjliggör man också förflyttning av kod mellan olika datorplattformar, såväl som inkapsling av den tänkta funktionaliteten.

Ett exempel

Kontraktet för ett matematikbibliotek som tillhandahåller funktionerna Min(...) och Max(...) för heltal kan se ut på följande sätt:

Kontrakt för MinMax
---
Funktioner:
  int Max(int a, int b)
  Funktion: Max(...) returnerar det större talet av de två inparametrarna a och b
  Returvärdets datatyp är heltal (int)
  Sidoeffekter: Inga. 

  int Min(int a, int b)
  Funktion: Min(...) returnerar det mindre talet av de två inparametrarna a och b
  Returvärdets datatyp är heltal (int)
  Sidoeffekter: Inga.

Externa länkar

Personliga verktyg