API ( IPA : [ ˌ e ɪ . p i ˈ a ɪ ]; lyhenne englannista . Application Programming Interface [ 1 ] ) on kuvaus siitä, kuinka yksi tietokoneohjelma on vuorovaikutuksessa muiden kanssa. Sisältyy yleensä jonkin Internet-protokollan (esimerkiksi SCIM [2] ), ohjelmistokehyksen ( framework [3] ) tai käyttöjärjestelmän toimintokutsustandardin [4] kuvaukseen . Usein toteutetaan erillisellä ohjelmistokirjastollatai käyttöjärjestelmäpalvelu . Ohjelmoijat käyttävät sitä kirjoittaessaan kaikenlaisia sovelluksia .
Yksinkertaisesti sanottuna tämä on joukko komponentteja, joiden kanssa tietokoneohjelma (botti tai verkkosivusto) voi käyttää toista ohjelmaa.
API (Application Programming Interface) yksinkertaistaa ohjelmointiprosessia sovelluksia rakennettaessa poistamalla taustalla olevan toteutuksen ja tarjoamalla vain kehittäjän tarvitsemat objektit tai toiminnot. Jos sähköpostiohjelman graafinen käyttöliittymä voi tarjota käyttäjälle painikkeen, joka käy läpi kaikki vaiheet uusien sähköpostien hakemiseksi ja korostamiseksi, File I/O API voi antaa kehittäjälle toiminnon, joka kopioi tiedoston paikasta toiseen. vaatimatta kehittäjää ymmärtämään tiedostotoimintoja. kulissien takana tapahtuvia järjestelmiä. [5]
Jos ohjelmaa (moduulia, kirjastoa) pidetään mustana laatikkona , API on joukko "kahvoja", jotka ovat tämän laatikon käyttäjän käytettävissä ja joita hän voi kääntää ja vetää.
Ohjelmistokomponentit ovat vuorovaikutuksessa toistensa kanssa API:iden kautta. Tällöin komponentit muodostavat yleensä hierarkian - korkean tason komponentit käyttävät matalan tason komponenttien API:ta ja ne puolestaan vielä alemman tason komponenttien API:ta.
Tämän periaatteen mukaan rakennetaan tiedonsiirtoprotokollat Internetissä . Standardiprotokollapino ( OSI-verkkomalli ) sisältää 7 kerrosta (fyysisestä bitinsiirtokerroksesta sovellusprotokollakerrokseen, kuten HTTP ja IMAP ). Jokainen kerros käyttää edellisen ("alemman") tiedonsiirtokerroksen toiminnallisuutta ja tarjoaa puolestaan halutun toiminnallisuuden seuraavalle ("ylemmälle") kerrokselle.
Protokollan käsite on merkitykseltään lähellä API:n käsitettä. Molemmat ovat toiminnallisuuden abstraktioita, vain ensimmäisessä tapauksessa puhumme tiedonsiirrosta ja toisessa - sovellusten vuorovaikutuksesta.
Funktio - ja luokkakirjasto - API sisältää kuvauksen funktioiden allekirjoituksista ja semantiikasta .
Funktioallekirjoitus on osa yleistä funktion määritystä, jonka avulla kääntäjät voivat tunnistaa funktion muun muassa. Eri ohjelmointikielillä on erilaisia käsityksiä funktion allekirjoituksesta, mikä liittyy läheisesti myös toimintojen ylikuormituksen mahdollisuuksiin näissä kielissä.
Joskus tehdään ero kutsun allekirjoituksen ja funktion toteutusallekirjoituksen välillä . Kutsun allekirjoitus kootaan yleensä funktiokutsun syntaktisen rakenteen mukaan ottaen huomioon tämän funktion laajuuden allekirjoitus, funktion nimi, kutsun varsinaisten argumenttityyppien järjestys ja funktion tyyppi. tulos. Toteutusallekirjoitus sisältää yleensä joitain elementtejä funktion määrittelyn syntaktisesta rakenteesta: funktion laajuuden määrittäjä, sen nimi ja muodollisten argumenttityyppien sarja.
Esimerkiksi C++-ohjelmointikielessä kääntäjä tunnistaa yksinkertaisen funktion yksilöllisesti sen nimen ja argumenttityyppien sekvenssin perusteella, joka muodostaa funktion allekirjoituksen kyseisessä kielessä. Jos funktio on jonkin luokan metodi, niin myös luokan nimi osallistuu allekirjoitukseen.
Java - ohjelmointikielessä menetelmän allekirjoitus on sen nimi ja parametrityyppien järjestys; palautetun arvon tyyppi ei liity allekirjoitukseen. [6]
Funktion semantiikka on kuvaus siitä, mitä tietty funktio tekee. Funktion semantiikka sisältää kuvauksen siitä, mikä on funktion arvioinnin tulos, miten ja mistä tämä tulos riippuu. Yleensä suoritustulos riippuu vain funktion argumenttien arvoista, mutta joissakin moduuleissa on tilan käsite. Tällöin funktion tulos voi riippua tästä tilasta, ja lisäksi tuloksena voi olla tilanmuutos. Näiden riippuvuuksien ja muutosten taustalla oleva logiikka liittyy funktion semantiikkaan. Funktioiden semantiikan täydellinen kuvaus on funktion suoritettava koodi tai funktion matemaattinen määritelmä.
Lähes kaikissa käyttöjärjestelmissä ( UNIX , Windows , OS X , Linux jne.) on API, jonka avulla ohjelmoijat voivat luoda sovelluksia kyseiselle käyttöjärjestelmälle. Käyttöjärjestelmien tärkein API on joukko järjestelmäkutsuja .
Ohjelmistoteollisuudessa standarditoimintojen yhteiset standardirajapinnat ovat tärkeässä roolissa, sillä ne varmistavat, että kaikki yhteistä APIa käyttävät ohjelmat toimivat yhtä hyvin tai ainakin tyypillisellä tutulla tavalla. GUI-sovellusliittymien tapauksessa tämä tarkoittaa, että ohjelmilla on samanlainen käyttöliittymä, mikä helpottaa uusien ohjelmistotuotteiden oppimista.
Toisaalta erot eri käyttöjärjestelmien API:issa vaikeuttavat sovellusten siirtämistä alustojen välillä. On olemassa useita menetelmiä tämän monimutkaisuuden kiertämiseksi - kirjoittaa "välitason" API:t (API:t graafisille käyttöliittymille wxWidgets , GTK jne.), kirjoittaa kirjastoja, jotka yhdistävät järjestelmäkutsut yhdestä käyttöjärjestelmästä toisen käyttöjärjestelmän järjestelmäkutsuihin (ajonaikaiset ympäristöt, kuten Wine , cygwin ja jne.), koodausstandardien käyttöönotto ohjelmointikielissä (esimerkiksi C -standardikirjasto ), tulkittujen kielten kirjoittaminen, jotka voidaan toteuttaa eri alustoilla ( sh , Python , Perl , PHP , Tcl , Javascript , Ruby , jne.).
Lisäksi ohjelmoijalla on usein käytössään useita erilaisia API:ita saman tuloksen saavuttamiseksi. Tässä tapauksessa kukin API toteutetaan yleensä käyttämällä alemman abstraktiotason ohjelmistokomponenttien API-liittymiä.
Esimerkiksi: nähdäksesi selaimessa rivin " Hei, maailma!" ”, sinun tarvitsee vain luoda HTML - dokumentti, jolla on minimaalinen otsikko ja yksinkertainen runko, joka sisältää annetun merkkijonon. Kun selain avaa tämän asiakirjan , selainohjelma välittää tiedostonimen (tai jo avoimen tiedostokuvaajan ) HTML-dokumentteja käsittelevälle kirjastolle, joka puolestaan lukee tämän tiedoston käyttöjärjestelmän API:n avulla ja ymmärtää sen laitteen. , kutsu sitten peräkkäin standardigrafiikkaprimitiivien kirjaston API:n kautta toimintoja, kuten "tyhjennä ikkuna", "kirjoita "Hei, maailma!" valitulla fontilla. Näiden toimintojen suorittamisen aikana graafinen primitiivinen kirjasto kääntyy ikkunan käyttöliittymäkirjaston puoleen asianmukaisilla pyynnöillä, tämä kirjasto kääntyy jo käyttöjärjestelmän API:n puoleen kirjoittaakseen tietoja näytönohjaimen puskuriin .
Samaan aikaan on olemassa useita mahdollisia vaihtoehtoisia sovellusliittymiä lähes kaikilla tasoilla. Esimerkiksi: voisimme kirjoittaa lähdedokumenttia ei HTML:llä, vaan LaTeX :llä , voisimme käyttää mitä tahansa selainta näyttämiseen. Lisäksi eri selaimet käyttävät erilaisia HTML-kirjastoja, ja lisäksi kaikki tämä voidaan rakentaa erilaisilla primitiivikirjastoilla ja eri käyttöjärjestelmillä.
Nykyisten kerrostettujen API-järjestelmien tärkeimmät monimutkaisuudet ovat seuraavat:
|
Käytetään verkkokehityksessä - se sisältää yleensä tietyn joukon HTTP - pyyntöjä sekä HTTP-vastausten rakenteen määritelmän, jonka ilmaisemiseen he käyttävät XML- tai JSON -muotoa .
Web API on lähes synonyymi verkkopalvelulle, vaikka viimeaikainen Web 2.0 -trendi on siirtynyt SOAP :sta REST - viestintään. Verkkokäyttöliittymät, jotka tarjoavat useiden palveluiden yhdistelmän uusissa sovelluksissa, tunnetaan yhdistelmänä.
Esimerkkejä: MediaWiki API
Käyttöjärjestelmien näkökohdat | |||||
---|---|---|---|---|---|
| |||||
Tyypit |
| ||||
Nucleus |
| ||||
Prosessien hallinta |
| ||||
Muistinhallinta ja osoitus |
| ||||
Lataus- ja alustustyökalut | |||||
kuori | |||||
muu | |||||
Luokka Wikimedia Commons Wikikirjat Wikisanakirja |