Applikasjonsprogrammeringsgrensesnitt

I et dataprogram , med applikasjonsprogrammeringsgrensesnitt ( API ), på italiensk " applikasjonsprogrammeringsgrensesnitt ", indikerer det et sett med prosedyrer (vanligvis gruppert etter spesifikke verktøy) designet for å løse et spesifikt kommunikasjonsproblem mellom forskjellige datamaskiner eller mellom forskjellig programvare eller mellom forskjellige programvarekomponenter [1] ; ofte betegner dette begrepet programvarebibliotekene til et programmeringsspråk [2] , selv om API-en mer korrekt er metoden som bibliotekene brukes til for å overvinne et spesifikt informasjonsutvekslingsproblem [3].

Funksjoner

Det finnes ulike designmodeller for APIer. Grensesnitt beregnet for maksimal utførelseshastighet består ofte av en rekke funksjoner , prosedyrer , variabler og datastrukturer . Det finnes også andre modeller som tolker som brukes til å evaluere uttrykk som med ECMAScript / JavaScript . En god API gir en «black box», altså et abstraksjonsnivå som gjør at programmereren slipper å vite hvordan APIen fungerer på et lavere nivå. Dette lar deg redesigne eller forbedre funksjonene i API-en uten å endre koden som er avhengig av den.

Det er to retningslinjer for API-publisering:

  1. Noen selskaper beholder sjalusi APIene sine. For eksempel leverer Microsoft kun offisielle API-er til registrerte Xbox- utviklere . Dette er fordi den har til hensikt å begrense antall personer som kan skrive spill for konsollen for å begrense piratkopiering.
  2. Andre selskaper distribuerer API-ene offentlig. For eksempel gir Microsoft selv offentligheten informasjon om Windows API , inkludert Microsoft Foundation Classes (MFC), for å skrive programvare for Windows -plattformen .

Noen API-er, for eksempel standardene til et operativsystem , er implementert som et separat bibliotek og distribuert med operativsystemet. Andre API-er krever at programvareutgivere integrerer API-en direkte i applikasjonen. Dette gjør en ytterligere forskjell i det forrige eksemplet.

Microsoft Windows API-er følger med operativsystemet, og alle kan bruke dem. Programvare for innebygde systemer som videospillkonsoller faller vanligvis i kategorien der APIer er integrert med applikasjonen. Mens den offisielle Playstation API-dokumentasjonen kan være interessant lesning, er den nesten ubrukelig uten den tilsvarende implementeringen i form av et eget bibliotek eller utviklersett.

En API som ikke krever betaling av avgifter for tilgang og bruk kalles "åpen". API-ene levert av gratis programvare , for eksempel programvare distribuert under GPL -lisensen , er åpne per definisjon, siden du kan få tilgang til kilden til programvaren og forstå hvordan den fungerer. Selv om det er en " referanseimplementering " for en API (som Microsoft Windows for Windows API ), er det ingenting som hindrer opprettelsen av en alternativ implementering. For eksempel kan det meste av Windows API leveres på et Unix -system av programvare kalt Wine .

Generelt sett er det et brudd på loven å analysere implementeringen av en API for å produsere en kompatibel en. Denne teknikken kalles reverse engineering . Den juridiske situasjonen i disse sakene er tvetydig, så det er bedre å ta tak i problemet før omvendt engineering-aktiviteten har begynt. For eksempel kan et API i seg selv inneholde et patent .

Formål

Målet er å oppnå et høyere nivå av abstraksjon , vanligvis mellom maskinvaren og programmereren eller mellom lav- og høynivå programvare , og dermed forenkle programmeringsarbeidet . Faktisk lar API programmerere unngå å omskrive alle funksjonene som er nødvendige for programmet hver gang fra bunnen av, det vil si fra et lavt nivå, og dermed falle innenfor det bredere konseptet kodegjenbruk . API-ene i seg selv representerer derfor et mellomnivå av abstraksjon: programvaren som gir en viss API kalles en API-implementering.

Posix

Siden det finnes mange varianter av APIer, ble det opprettet et prosjekt i 1985 for å lage en standard. Familien som omfatter disse standardene tar navnet Posix (akronym for "Portable Operating System Interface for Unix"), hvis navn ble opprettet av Richard Stallman etter forespørsel fra IEEE om et navn som er lett å huske.

Brukseksempel

Du kan tenke på en applikasjon som skriver ordene " Hello world " på en skjerm med ulike abstraksjonsnivåer:

  1. Skriv alt ned selv:
    1. Tegn formene til bokstavene H, e, l, l, o, W, o, r, l, d på et ark.
    2. Lag en matrise av svarte og hvite firkanter med formen til hver av bokstavene
    3. Kom opp med en måte å programmere CPU til å plassere denne matrisen i skjermkortets rammebuffer .
    4. Klargjør skjermkortet for å generere riktig signal fra rammebufferinnholdet .
  2. Bruk et operativsystem til å utføre deler av oppgaven:
    1. Last inn i minnet en datastruktur kalt "font" levert av operativsystemet.
    2. Få operativsystemet til å vise et tomt vindu.
    3. La operativsystemet tegne teksten "Hello World" på vinduet ved å bruke den innlastede fonten.
  3. Bruk en applikasjon (som igjen bruker operativsystemet) til alt arbeidet:
    1. Skriv et HTML -dokument som inneholder ordene "Hello World".
    2. Åpne dokumentet med en nettleser .

Det er klart at tilnærmingen på første nivå krever mange trinn, og hver av disse er mye mer kompleks enn de påfølgende nivåene. En annen ulempe med den første tilnærmingen er at det er upraktisk å bruke den hvis du skal vise en viss mengde informasjon på skjermen; med den andre tilnærmingen er operasjonen mye enklere, og i den tredje er det tilstrekkelig å skrive "Hello World". Vanligvis innebærer bruk av API-er på høyere nivå noe tap av fleksibilitet; for eksempel kan det være svært vanskelig på nettlesernivå å rotere tekst med blinkende kanter rundt et punkt, mens denne oppgaven kan gjøres enkelt på et lavere nivå. Denne forskjellen er et typisk eksempel på en avveining som kan oppstå ved bruk av en API.

API-eksempler

Merknader

  1. ^ Martin Reddy, API-design for C++ , Morgan Kaufmann, 2011, ISBN  978-0-12-385004-1 , OCLC  704559821 . Hentet 16. mai 2022 .
  2. ^ Walkthrough: Calling Windows API (Visual Basic) , på Docs.Microsoft.com , 20. juli 2015. Hentet 13. februar 2019 .
  3. ^ API vs bibliotek (Hva er forskjellen?) , På rapidapi.com .

Relaterte elementer

Eksterne lenker