Application programming interface: Forskelle mellem versioner

Content deleted Content added
Rettet stave- og grammatikfejl
Apoltix (diskussion | bidrag)
Artikel skrevet om. Den beskrev mere eller mindre et framework, og ikke et API, og på en dårlig måde. Gendannet+tilpasset lidt fra tidligere version.
Linje 1:
'''''Application Programming Interface''''', forkortet '''''API''''', er en softwaregrænseflade, der tillader et stykke [[software]] at interagere med andet software. Et API er implementeret i [[Applikation (datalogi)|applikationer]] (programmer), [[Programbibliotek|programbiblioteker]] og [[styresystem|styresystemer]]. Et typisk eksempel på dette er når applikationer "taler" med styresystemet for at åbne en [[Fil (dataobjekt)|fil]], hvorefter styresystemet på programmets vegne vil indlæse filen fra, eksempelvis, en [[harddisk]]<!-- faktisk er det kernen der gør dette, men det går stadig gennem OS'et -->.
'''Beskrivelse af API.'''
 
I en nøddeskal kan et API betegnes som en måde at tilbyde tjenester, herunder data, fra et system i et andet system.
'''API''' er en forkortelse for '''Application Programming Interface''' og er en grænseflade, der er stillet tilgængeligt for applikationsprogrammører til at programmere applikationer på.
 
==Koncept==
Et API definerer et sæt af kendte (dokumenterede), og således eksternt brugbare funktioner, som andre programmer kan bruge i forbindelse med udførsel af en opgave. I modsætningen til publicerede funktioner, der altså er eksternt brugbare, findes der ikke-eksternt brugbare funktioner, såkaldte private funktioner, der er forbeholdt de udviklere, der oprindeligt har lavet API'et, eller den software der stiller API'et til rådighed. Hvis en udvikler benytter sig af en privat funktion, der ikke er dokumenteret, kan programmet og dets funktionalitet gå i stykker, så snart udvikleren [[#Opdateringer af API'er|opdaterer API'et]].
 
API'er findes i alle styresystemer, der tillader udvikling af [[Applikation (datalogi)|applikationer]]. Dette er krævet for at programmet og styresystemet kan kommunikere med hinanden. Det definerer en række [[Protokol (regel)|protokoller]]<!-- det er IKKE "Protokol (edb)" der er tale om her! -->, regelsæt, der gør at programmet kan bede styresystemet om at gøre specifikke ting, og omvendt. Er disse ikke implementeret vil funktionaliteten af programmet være stærkt begrænset, eftersom rigtig mange handlinger bliver behandlet af selve styresystemet. Eksempelvis er fremvisning af [[Grafisk brugerflade|grafiske brugergrænseflader]] ofte håndteret af operativsystemet, og ikke selve programmet.
Det kan være ret svært at forstå hvad API går ud på, men et eksempel kunne være fra python.
<pre>def udskriv_tekst(tekst):
print("Tekst: "+tekst)
 
Et API må ikke forveksles med et [[framework]], der overfladisk kan betegnes som værende byggeklodser for programmer, som ofte er standardiserede.
 
==Brug==
udskriv_tekst("Min tekst der skal udskrives.")
Udover brug i styresystemer, er API'er også i vidt brug på [[Internet|internettet]]: adskillige populære websider stiller API'er til rådighed, som tillader tredjeparts websider eller -programmer at bruge websidens funktioner og/eller data. Eksempelvis har [[Twitter]]<ref name="twitter">[http://dev.twitter.com/ Twitter Developers]</ref> og [[Flickr]]<ref name="flickr">[http://www.flickr.com/services/api/ Flickr API]</ref> API'er til rådighed.
....
udskriv_tekst("Skal have skrevet en tekst mere.")
</pre>
Med denne linje vil det så være muligt at have en fast API, hvor man altid skriver '''Tekst:''' foran den tekst, der skal udskrives. Eksemplet kunne være en del mere kompliceret.<br />
Men i det store hele består det af en række faste arbejdsopgaver.
 
 
I programsprog er hele API'et typisk stillet til rådighed.<br />
API kan derfor deles op i andre ord og begreber, og det er op til udbyderen selv at definere, hvad deres API er og ligeledes de metoder det skal være muligt at benytte.
 
 
'''API bruges i mange sammenhænge.'''
 
Lad os kaste blikket på styresystemer, hvor ét API kan dække over flere ting, som indeholder flere under-API'er.<br />
I Linux har man valgt ikke at have den grafiske kodning indlejret i systemets kerne. Det gør Linux til et system hvor man har en masse adskilte filer, som kan tilgås via en konsol eller ved at inkludere filens kode m.m. Det giver et stort udvalg af API'er til programmøren.<br />
I styresystemet Windows finder man et lidt anderledes API. I dette system er det som regel ikke muligt at få kildekoden. Her ser man altså at udbyderen af et program kan lave en fil, der fortæller andre programmer hvordan dets API virker, og som gør det lettere for programmøren at bruge deres kode.<br />
Denne brug af API'er kan nemt betragtes som Windows og Linux løsning/API. Men for bedre at forstå hvad et API er, skal man se det som flere API'er.<br />
 
 
Et API er mange ting, men det meste af tiden handler API om at kunne holde styr på sit program og evt. lade andre bruge koden.<br />
Det vil derfor ikke overraske, at der ligger et API bag den grafiske styring.
 
 
Websider som Twitter og Facebook har valgt at lave deres egne tilføjelsesknapper, som bestemt også kan betegnes som API'er, da de skal indsættes på andre websider og der er et ønske om at man let kan få sendt oplysninger til deres system.
 
 
Google bots er måske nok et af de mest tydelige eksempler på et modsat API af Twitter og Facebook.<br />
Her ser vi en bot (robot), som finder oplysninger på egen hånd. Men man kan også styre robotten fra den hjemmeside den kigger på.<br />
Det kan også kaldes for et styre-API, som er stillet til rådighed.
 
 
'''Den fokus som ligger på API'''
 
Det kan også være ret svært at vurdere, om et API er af god eller dårlig kvalitet.<br />
Problemet der kan opstå på området er, at det en gang imellem er bedst at API'et er tilpasset direkte til behovet.<br />
Et typisk dårligt API er kendetegnet ved et system der er blevet for indviklet, eller et som man simpelthen har mistet kontakten med.
 
==Opdateringer af API'er==
{{SværtStof}}
Hvert API har typisk et versionsnummer, der skiftes hver gang der laves tilføjelser eller ændringer i grænsefladen. Når et API ændres kan det blive inkompatibelt med programmer, der bruger gamle versioner af det API. Der findes flere typer ændringer: helt interne ændringer, som retter fejl eller gør de funktioner, der stilles til rådighed mere effektive; tilføjelse af nye muligheder, der ikke har indvirkning på eksisterende programmer; samt gennemgribende ændringer, der ikke bevarer den eksisterende grænseflade.
 
Interne ændringer har ingen påvirkning på selve funktionaliteten af programmet, men kan eksempelvis gøre dette hurtigere, på grund af [[Optimering (it)|optimeringer]]. Hvis et program laves om, så nye funktionaliteter udnyttes, vil programmet ikke nødvendigvis længere kunne anvendes med ældre versioner af API'et. Afhængig af programmet og API'et vil programmøren kunne bibeholde en vis mængde bagudkompatibilitet, ved at undersøge versionen af API'et, og kun tilbyde de funktioner der er til rådighed. Ved gennemgribende ændringer er det oftest nødvendigt at rette brugen af API'et i de eksisterende programmer.
 
== Se også ==
* [[Framework]]
* [[Programbibliotek]]
 
==Referencer==
<references />
 
{{IT-stub}}
 
[[Kategori:Datalogi]]
[[Kategori:Programmering]]
 
[[ar:واجهة برمجة التطبيقات]]