Rakendusliides
ehk
programmiliides
ehk
rakendustarkvara liides
ehk
API
(
inglise keeles
application programming interface
) on
arvutiprogrammides
alamprogrammi
maaratluste,
protokollide
ja tooriistade komplekt
rakendustarkvara
ehitamiseks. Uldiselt on tegemist eri tarkvarakomponentide vahelise selgelt maaratletud sidevahendite kogumiga. Rakendusliidese ulesanne on lihtsustada
tarkvara
arendamist, andes ette programmiplokid, mida
programmeerijad
kasutavad lopliku arvutiprogrammi koostamisel. Rakendusliides voib olla
veebipohine
susteem,
operatsioonisusteem
,
andmebaasi
susteem,
arvuti riistvara
voi
tarkvara
kogum. Rakendusliidese spetsifikatsiooni voib esitleda mitmesugusel kujul, kuid tihti sisaldab see rutiinide,
andmestruktuuride
,
objektiklasside
,
muutujate
voi
protseduuri
kutsumise kirjeldusi. Naiteid rakendusliidestest:
POSIX
,
Microsoft
Windows API
,
C++ Standard Template Library
ja Java API'id. Tavaparaselt kaib rakendusliidestega kaasa dokumentatsioon, et holbustada nende kasutamist.
Samamoodi, nagu lihtsustab
graafiline kasutajaliides
arvutiprogrammide kasutamist, lihtsustab rakendusliides programmeerijatel programmide kirjutamist. Rakendusliides lihtsustab
programmeerimist
, eemaldades alusimplementatsiooni ja jattes alles ainult objektid ja toimingud, mida programmeerijal vaja laheb. Kui graafiline kasutajaliides loob kasutajale naiteks nupu, mida vajutades sorteeritakse
e-kirjad
vanuse jargi, siis rakendusliides pakub programmeerijale
funktsiooni
, mis sorteerib
failid
teatud omaduse jargi, ilma et ta peaks teadma ja aru saama sellest, kuidas
failisusteem
need failid ara sorteerib.
[1]
Rakendusliides on tavaliselt seotud
tarkvara teekidega
. Rakendusliides kirjeldab ja maarab reeglikogumi eeldatava kaitumise, kuid teek on reeglikogumi implementatsioon. Uhel rakendusliidesel saab olla mitu (voi mitte uhtegi) implementatsiooni eri teekide naol, mis kasutavad sama rakendusliidest. Rakendusliidese eraldamine tema implementatsioonidest voimaldab uhes keeles kirjutatud programmidel kasutada teises keeles kirjutatud teeke. Naiteks, kuna
Scala
ja
Java
kompileeruvad uhilduvaks
baitkoodiks
, siis Scala programmeerijad saavad kasutada ukskoik millist Java API'i.
[2]
Rakendusliidese kasutus varieerub
programmeerimiskeelte
vahel. Rakendusliides protseduurilise programmeerimiskeele jaoks nagu
Lua
koosneb pohiliselt algrutiinidest, et kaivitada kood, muuta andmeid voi kasitleda vigu. Kuid rakendusliides objektorienteeritud programmeerimiskeele jaoks nagu Java, rakendab klasside kirjeldused ja nende meetodid.
[3]
[4]
Programmeerimiskeelte vahelised seosed on samuti rakendusliidesed. Sidudes uhe programmeerimiskeele funktsioonid ja voimalused teises keeles koostatud teegiga, voimaldavad programmeerimiskeelte vahelised seosed kasutada uhes keeles kirjutatud teeki voi teenust, teises programmeerimiskeeles programmeerides.
Liidesegeneraatorid
nagu
SWIG
ja
F2PY
holbustavad selliste teekide loomist.
[5]
Rakendusliides voib olla ka seotud
tarkvararaamistikuga
? tarkvararaamistik voib koosneda mitmest teegist, mis implementeerivad mitut rakendusliidest, kuid erinevalt rakendusliidese tavaparasest kasutusest on tarkvararaamistiku funktsionaalsed voimalused laiendatud tarkvararaamistikku endasse, uute
klasside
lisamisega. Lisaks voib uldine programmipohine juhtimisvoog olla valjaspool kutsuja kontrolli ja olla hoopis tarkvararaamistiku juhtimise all. Kokkuvotvalt 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 maarata
rakenduse
ja
operatsioonisusteemi
vahelise
liidese
.
POSIX
naiteks maarab levinud rakendusliideste kogu, mille komponendid voimaldavad rakendusel, kirjutatud uhe
POSIX
vastava
operatsioonisusteemi
jaoks, kompileeruda teisel POSIX vastaval operatsioonisusteemil.
[8]
Microsoft
peab tahtsaks tagurpidi uhilduvate rakendusliideste loomist, et vanemaid rakendusi saaks kaivitada uuemal
Windowsi
versioonil. Naiteks Microsofti Windows API (Win32) teek.
[9]
Rakendusliides erineb rakenduse binaarliidesest selle poolest, et rakendusliides on algkoodil baseeruv, kuid
binaarliides
on
kahendfailil
baseeruv. Naiteks POSIX pakub rakendusliideseid, kuid
Linux Standard Base
pakub binaarliideseid.
[10]
Kauguhenduse rakendusliidesed voimaldavad
tarkvaraarendajatel
muuta ressursse protokollide kaudu. Naiteks
Java Database Connectivity
rakendusliides lubab arendajatel saata eri andmebaasidesse paringuid. Java
Remote Method Invocation
rakendusliides kasutab Java
Remote Method protokolli
, et lubada paringute kaugsaatmine. See teeb andmebaaside halduse palju kergemaks.
[11]
Kauguhenduse rakendusliidesed on kasulikud objektorienteeritud programmeerimises objektidega tootamisel.
[12]
Veebipohised rakendusliidesed on liidesed, mille kaudu kaib suhtlus ettevotte ja selle ressursse kasutava rakenduse vahel. Rakendusliides pakub programmeeritavaid teeke rakenduste hulgale, mis teenindavad eri kasutajaid.
Veeblehekulgede
arendamisel on veebipohised rakendusliidesed defineeritud
Huperteksti edastusprotokolli
(HTTP) paringute ja vastavate vastustega, mis on tavaliselt
XML
voi
JSON
formaadis. Naiteks on veebipoe lehekuljele lisatud rakendusliides, mis koostab statistikat ostetud kauba kattesaamisaegade kohta, ilma et poe andmebaasi oleks vaja koostada vastav tabel andmetega.
Kuigi veebipohilised rakendusliidesed on olnud sunonuumiks veebiteenuste jaoks, on viimane trend (nii-oelda
Veebis 2.0
) liikunud eemale
SOA
protokollide ja teenusele orienteeritud arhitektuurist (SOA). Pigem kasutatakse rohkem
REST
-stiilis veebiressursse ja
ressursile orienteeritud arhitektuuri
(ROA). Suur roll selles on ressursi kirjelduse tarkvararaamistikul (RDF). Veebipohised rakendusliidesed lubavad eri liideste kombineerimist.
Sotsiaalmeedia
veebilehekulgede rakendusliidesed lubavad andmevahetust eri rakenduste vahel. Sellisel juhul ilmuvad postitatud
andmed
uhes kohas automaatselt ka teises kohas. See lubab ka automaatset andmete uuendamist ule mitme rakenduse. Naiteks kui lisada uus pilt
Instagrami
, siis teine veebileht, mis kasutab
Instagrami
andmeid, saab otsese ligipaasu lisatud pildile. Voi kui uhendada moni teine rakendus voi veebiteenus oma
Google
'i kasutajaga, siis Google'i kasutaja andmete muutmisel muutuvad ka andmed koikides teistes rakendustes ja
veebiteenustes
, mis olid Google'i kasutajaga seotud.
[13]
- ASPI
vaikearvutisusteemi liideste jaoks
- Cocoa
ja
Carbon
Macintoshi
susteemidele
- DirectX
Microsoft Windowsi susteemidele
- Java API'id
- ODBC
Microsoft Windowsi susteemidele
- OpenALi
heli rakendusliides
- OpenCLi
arvutusliidesed protsessorite jaoks
- OpenGLi
graafika rakendusliides
- OpenMPi
programmeerimisliides
Unixi
ja Microsoft Windowsi susteemidele
- SAPI
serveri rakenduste programmeerimise rakendusliides