WebSocket-ohjelmointirajapinnan käytettävyys sovelluskehityksessä
Matarmaa, Jarno (2020)
Matarmaa, Jarno
2020
Tietojenkäsittelytieteiden kandidaattiohjelma - Bachelor's Programme in Computer Sciences
Informaatioteknologian ja viestinnän tiedekunta - Faculty of Information Technology and Communication Sciences
This publication is copyrighted. You may download, display and print it for Your own personal use. Commercial use is prohibited.
Hyväksymispäivämäärä
2020-12-09
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:tuni-202012088590
https://urn.fi/URN:NBN:fi:tuni-202012088590
Tiivistelmä
Tässä tutkielmassa tarkastellaan WebSocket-protokollan toimintaperiaatteita ja tutustutaan sen ohjelmointirajapintaan. Tavoitteena on tunnistaa tärkeimmät WebSocket API:n (Application Programming Interface) käytettävyysongelmat. Protokollan käytettävyyttä tarkastellaan erityisesti sovelluskehityksen näkökulmasta. Käytettävyydessä otetaan huomioon ensisijaisesti ohjelmointirajapinnan käytön ja kehityksen ketteryys, mutta myös yhteensopivuus-, luotettavuus- ja turvallisuusnäkökulmat.
Perinteisten HTTP-protokollaan perustuvien, pyyntö-vastaus-sykliä hyödyntävien protokollien käytettävyys ei vastaa enää uusimpia vaatimuksia monissa sovelluksissa, sillä ne lisäävät tarpeetonta verkon kuormitusta, eikä niitä ole suunniteltu reaaliaikaiseen ja kaksisuuntaiseen verkkoviestintään. Myös WebSocket käyttää HTTP-protokollaa yhteyden avaamisessa asiakkaan (client) ja palvelimen välille, mutta se on ensimmäinen aidosti kaksisuuntaisen kommunikoinnin mahdollistava verkkoteknologia. Kaksisuuntaisuuden tuoman suorituskykyedun ansiosta se on erittäin käyttökelpoinen teknologia moniin sellaisiin absoluuttista reaaliaikaisuutta vaativiin sovelluskohteisiin, joissa aiemmat protokollat ovat osoittautuneet riittämättömiksi.
Selaimen tarjoama JavaScript-kielinen natiivi WebSocket API on suppea ja yksinkertainen. Koska WebSocket-protokollaa voidaan käyttää myös muissa kuin HTTP-perusteisissa selainsovelluksissa, sen ohjelmointirajapinta ei sisällä ratkaisuja palomuurien, virustorjuntaohjelmien, verkon kuormituksentasaajien tai yhteyskatkoksien käsittelyyn. Tämä muodostaa protokollan käytettävyysongelmia sovelluskehityksessä, joiden ratkaisuksi tässä tutkielmassa esitetään rajapintalaajennoksia.
Tutkielmassa osoitetaan, miten Socket.io API:n avulla voidaan saavuttaa merkittäviä WebSocket-protokollan käytettävyysparannuksia säilyttämällä ohjelmointirajapinnan johdonmukaisuus ja selkeys sovelluskehityksessä. Vaikka web-sovelluskehittäjän ratkaistavaksi jää vielä paljon tietoturvahaavoittuvuuksia, kuten palvelunestohyökkäysten, WebSocket-sivustokaappausten ja väärennettyjen pyyntöjen käsittelyä, muodostavat Socket.io ja sen sisältämät moduulit hyvin käyttökelpoisen rajapinnan web-sovellusten tiedonsiirto-ongelmien ratkaisemiseksi. Lisäksi aiemmat tutkimukset osoittavat, että käytettävyysparannukset eivät merkittävästi heikennä yhteyden tiedonsiirtoviivettä verrattuna WebSocket-ohjelmointirajapintaan. Tästä huolimatta suorituskykykriittisissä sovelluksissa tulisi käyttää aina WebSocket API:a.
Perinteisten HTTP-protokollaan perustuvien, pyyntö-vastaus-sykliä hyödyntävien protokollien käytettävyys ei vastaa enää uusimpia vaatimuksia monissa sovelluksissa, sillä ne lisäävät tarpeetonta verkon kuormitusta, eikä niitä ole suunniteltu reaaliaikaiseen ja kaksisuuntaiseen verkkoviestintään. Myös WebSocket käyttää HTTP-protokollaa yhteyden avaamisessa asiakkaan (client) ja palvelimen välille, mutta se on ensimmäinen aidosti kaksisuuntaisen kommunikoinnin mahdollistava verkkoteknologia. Kaksisuuntaisuuden tuoman suorituskykyedun ansiosta se on erittäin käyttökelpoinen teknologia moniin sellaisiin absoluuttista reaaliaikaisuutta vaativiin sovelluskohteisiin, joissa aiemmat protokollat ovat osoittautuneet riittämättömiksi.
Selaimen tarjoama JavaScript-kielinen natiivi WebSocket API on suppea ja yksinkertainen. Koska WebSocket-protokollaa voidaan käyttää myös muissa kuin HTTP-perusteisissa selainsovelluksissa, sen ohjelmointirajapinta ei sisällä ratkaisuja palomuurien, virustorjuntaohjelmien, verkon kuormituksentasaajien tai yhteyskatkoksien käsittelyyn. Tämä muodostaa protokollan käytettävyysongelmia sovelluskehityksessä, joiden ratkaisuksi tässä tutkielmassa esitetään rajapintalaajennoksia.
Tutkielmassa osoitetaan, miten Socket.io API:n avulla voidaan saavuttaa merkittäviä WebSocket-protokollan käytettävyysparannuksia säilyttämällä ohjelmointirajapinnan johdonmukaisuus ja selkeys sovelluskehityksessä. Vaikka web-sovelluskehittäjän ratkaistavaksi jää vielä paljon tietoturvahaavoittuvuuksia, kuten palvelunestohyökkäysten, WebSocket-sivustokaappausten ja väärennettyjen pyyntöjen käsittelyä, muodostavat Socket.io ja sen sisältämät moduulit hyvin käyttökelpoisen rajapinnan web-sovellusten tiedonsiirto-ongelmien ratkaisemiseksi. Lisäksi aiemmat tutkimukset osoittavat, että käytettävyysparannukset eivät merkittävästi heikennä yhteyden tiedonsiirtoviivettä verrattuna WebSocket-ohjelmointirajapintaan. Tästä huolimatta suorituskykykriittisissä sovelluksissa tulisi käyttää aina WebSocket API:a.
Kokoelmat
- Kandidaatintutkielmat [8381]