Rakendusliides ehkprogrammiliides ehkrakendustarkvara liides ehkAPI (inglise keelesapplication programming interface) onarvutiprogrammidesalamprogrammi määratluste,protokollide ja tööriistade komplektrakendustarkvara ehitamiseks. Üldiselt on tegemist eri tarkvarakomponentide vahelise selgelt määratletud sidevahendite kogumiga. Rakendusliidese ülesanne on lihtsustadatarkvara arendamist, andes ette programmiplokid, midaprogrammeerijad kasutavad lõpliku arvutiprogrammi koostamisel. Rakendusliides võib ollaveebipõhine süsteem,operatsioonisüsteem,andmebaasi süsteem,arvuti riistvara võitarkvara kogum. Rakendusliidese spetsifikatsiooni võib esitleda mitmesugusel kujul, kuid tihti sisaldab see rutiinide,andmestruktuuride,objektiklasside,muutujate võiprotseduuri kutsumise kirjeldusi. Näiteid rakendusliidestest:POSIX,MicrosoftWindows API,C++ Standard Template Library ja Java API'id. Tavapäraselt käib rakendusliidestega kaasa dokumentatsioon, et hõlbustada nende kasutamist.
Samamoodi, nagu lihtsustabgraafiline kasutajaliides arvutiprogrammide kasutamist, lihtsustab rakendusliides programmeerijatel programmide kirjutamist. Rakendusliides lihtsustabprogrammeerimist, eemaldades alusimplementatsiooni ja jättes alles ainult objektid ja toimingud, mida programmeerijal vaja läheb. Kui graafiline kasutajaliides loob kasutajale näiteks nupu, mida vajutades sorteeritaksee-kirjad vanuse järgi, siis rakendusliides pakub programmeerijalefunktsiooni, mis sorteeribfailid teatud omaduse järgi, ilma et ta peaks teadma ja aru saama sellest, kuidasfailisüsteem need failid ära sorteerib.[1]
Rakendusliides on tavaliselt seotudtarkvara teekidega. Rakendusliides kirjeldab ja määrab reeglikogumi eeldatava käitumise, kuid teek on reeglikogumi implementatsioon. Ühel rakendusliidesel saab olla mitu (või mitte ühtegi) implementatsiooni eri teekide näol, mis kasutavad sama rakendusliidest. Rakendusliidese eraldamine tema implementatsioonidest võimaldab ühes keeles kirjutatud programmidel kasutada teises keeles kirjutatud teeke. Näiteks, kunaScala jaJava kompileeruvad ühilduvaksbaitkoodiks, siis Scala programmeerijad saavad kasutada ükskõik millist Java API'i.[2]
Rakendusliidese kasutus varieerubprogrammeerimiskeelte vahel. Rakendusliides protseduurilise programmeerimiskeele jaoks naguLua koosneb põhiliselt algrutiinidest, et käivitada kood, muuta andmeid või käsitleda vigu. Kuid rakendusliides objektorienteeritud programmeerimiskeele jaoks nagu Java, rakendab klasside kirjeldused ja nende meetodid.[3][4]
Programmeerimiskeelte vahelised seosed on samuti rakendusliidesed. Sidudes ühe programmeerimiskeele funktsioonid ja võimalused teises keeles koostatud teegiga, võimaldavad programmeerimiskeelte vahelised seosed kasutada ühes keeles kirjutatud teeki või teenust, teises programmeerimiskeeles programmeerides.Liidesegeneraatorid naguSWIG jaF2PY hõlbustavad selliste teekide loomist.[5]
Rakendusliides võib olla ka seotudtarkvararaamistikuga – tarkvararaamistik võib koosneda mitmest teegist, mis implementeerivad mitut rakendusliidest, kuid erinevalt rakendusliidese tavapärasest kasutusest on tarkvararaamistiku funktsionaalsed võimalused laiendatud tarkvararaamistikku endasse, uuteklasside lisamisega. Lisaks võib üldine programmipõhine juhtimisvoog olla väljaspool kutsuja kontrolli ja olla hoopis tarkvararaamistiku juhtimise all. Kokkuvõtvalt koosneb tarkvararaamistik mitmest eri teegist ja nende teekide kasutus on tarkvararaamistikku endasse sisse ehitatud. Samuti kontrollib tarkvararaamistik ise, kuidas ta neid teeke kasutab.[6][7]
Rakendusliides saab määratarakenduse jaoperatsioonisüsteemi vaheliseliidese.POSIX näiteks määrab levinud rakendusliideste kogu, mille komponendid võimaldavad rakendusel, kirjutatud ühePOSIX vastavaoperatsioonisüsteemi jaoks, kompileeruda teisel POSIX vastaval operatsioonisüsteemil.[8]
Microsoft peab tähtsaks tagurpidi ühilduvate rakendusliideste loomist, et vanemaid rakendusi saaks käivitada uuemalWindowsi versioonil. Näiteks Microsofti Windows API (Win32) teek.[9]
Rakendusliides erineb rakenduse binaarliidesest selle poolest, et rakendusliides on algkoodil baseeruv, kuidbinaarliides onkahendfailil baseeruv. Näiteks POSIX pakub rakendusliideseid, kuidLinux Standard Base pakub binaarliideseid.[10]
Kaugühenduse rakendusliidesed võimaldavadtarkvaraarendajatel muuta ressursse protokollide kaudu. NäiteksJava Database Connectivity rakendusliides lubab arendajatel saata eri andmebaasidesse päringuid. JavaRemote Method Invocation rakendusliides kasutab JavaRemote Method protokolli, et lubada päringute kaugsaatmine. See teeb andmebaaside halduse palju kergemaks.[11] Kaugühenduse rakendusliidesed on kasulikud objektorienteeritud programmeerimises objektidega töötamisel.[12]
Veebipõhised rakendusliidesed on liidesed, mille kaudu käib suhtlus ettevõtte ja selle ressursse kasutava rakenduse vahel. Rakendusliides pakub programmeeritavaid teeke rakenduste hulgale, mis teenindavad eri kasutajaid.Veeblehekülgede arendamisel on veebipõhised rakendusliidesed defineeritudHüperteksti edastusprotokolli (HTTP) päringute ja vastavate vastustega, mis on tavaliseltXML võiJSON formaadis. Näiteks on veebipoe leheküljele lisatud rakendusliides, mis koostab statistikat ostetud kauba kättesaamisaegade kohta, ilma et poe andmebaasi oleks vaja koostada vastav tabel andmetega.
Kuigi veebipõhilised rakendusliidesed on olnud sünonüümiks veebiteenuste jaoks, on viimane trend (nii-öeldaVeebis 2.0) liikunud eemaleSOA protokollide ja teenusele orienteeritud arhitektuurist (SOA). Pigem kasutatakse rohkemREST-stiilis veebiressursse jaressursile orienteeritud arhitektuuri (ROA). Suur roll selles on ressursi kirjelduse tarkvararaamistikul (RDF). Veebipõhised rakendusliidesed lubavad eri liideste kombineerimist.Sotsiaalmeedia veebilehekülgede rakendusliidesed lubavad andmevahetust eri rakenduste vahel. Sellisel juhul ilmuvad postitatudandmed ühes kohas automaatselt ka teises kohas. See lubab ka automaatset andmete uuendamist üle mitme rakenduse. Näiteks kui lisada uus piltInstagrami, siis teine veebileht, mis kasutabInstagrami andmeid, saab otsese ligipääsu lisatud pildile. Või kui ühendada mõni teine rakendus või veebiteenus omaGoogle'i kasutajaga, siis Google'i kasutaja andmete muutmisel muutuvad ka andmed kõikides teistes rakendustes javeebiteenustes, mis olid Google'i kasutajaga seotud.[13]
- ASPI väikearvutisüsteemi liideste jaoks
- Cocoa jaCarbonMacintoshi süsteemidele
- DirectX Microsoft Windowsi süsteemidele
- Java API'id
- ODBC Microsoft Windowsi süsteemidele
- OpenALi heli rakendusliides
- OpenCLi arvutusliidesed protsessorite jaoks
- OpenGLi graafika rakendusliides
- OpenMPi programmeerimisliidesUnixi ja Microsoft Windowsi süsteemidele
- SAPI serveri rakenduste programmeerimise rakendusliides