Asynkronisen ohjelmoinnin tekniikoiden vertailu Node.js-ympäristössä
Antonov, Petka (2016)
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:amk-201601241584
https://urn.fi/URN:NBN:fi:amk-201601241584
Tiivistelmä
Työn tarkoitus oli selvittää, mitä tekniikoita asynkroniseen ohjelmointiin on saatavilla, mitä heikkouksia ja vahvuuksia niillä on ja millaisiin tilanteisiin kukin tekniikka sopii parhaiten. Asynkronisella ohjelmoinnilla tarkoitetaan sitä, ettei ohjelman käskyjä suoriteta siinä järjestyksessä, missä ne esiintyvät lähdekoodissa.
Työssä esiteltiin aluksi synkroninen ja asynkroninen ohjelmointi, sekä asynkroniselle ohjelmoinnille saatavilla olevat tekniikat ympäristöstä huolimatta. Työn vertailu rajattiin kolmeen Node.js-ympäristössä saatavilla olevan asynkronisen ohjelmoinnin tekniikan vertailuun: takaisinkutsufunktioihin, async-apufunktiokirjastoon sekä lupauksiin (promises).
Vertailussa kuvailtiin kolme erilaista ongelmaa, joiden ratkaisut toteutettiin käyttäen kutakin vertailtavaa asynkronisen ohjelmoinnin tekniikkaa. Jokaisella ongelmalla oli myös erilainen samanaikaisuusvaatimus. Vertailun mittareina käytettiin käyttäjäkoodin luettavuutta, kompleksisuutta, suorituskykyä sekä käytettävyyttä.
Tuloksista kävi ilmi, että ongelmien eri vaatimuksista huolimatta lupaukset osoittautuivat parhaaksi tekniikaksi, kun kaikkien mittareiden yhteisvaikutus otetaan keskimäärin huomioon. Lupaukset käyttivät kuitenkin hieman enemmän muistia kuin muut tekniikat.
Työssä esiteltiin aluksi synkroninen ja asynkroninen ohjelmointi, sekä asynkroniselle ohjelmoinnille saatavilla olevat tekniikat ympäristöstä huolimatta. Työn vertailu rajattiin kolmeen Node.js-ympäristössä saatavilla olevan asynkronisen ohjelmoinnin tekniikan vertailuun: takaisinkutsufunktioihin, async-apufunktiokirjastoon sekä lupauksiin (promises).
Vertailussa kuvailtiin kolme erilaista ongelmaa, joiden ratkaisut toteutettiin käyttäen kutakin vertailtavaa asynkronisen ohjelmoinnin tekniikkaa. Jokaisella ongelmalla oli myös erilainen samanaikaisuusvaatimus. Vertailun mittareina käytettiin käyttäjäkoodin luettavuutta, kompleksisuutta, suorituskykyä sekä käytettävyyttä.
Tuloksista kävi ilmi, että ongelmien eri vaatimuksista huolimatta lupaukset osoittautuivat parhaaksi tekniikaksi, kun kaikkien mittareiden yhteisvaikutus otetaan keskimäärin huomioon. Lupaukset käyttivät kuitenkin hieman enemmän muistia kuin muut tekniikat.