Tapaus 4 - Web-teknologiat

Tapauksessa neljä tutustutaan webin maailmaan ja arkkitehtuurimalleihin.

Virike:

HTTP

HTTP eli Hypertext Transfer Protocol on nimensä mukaan hypertekstin siirtoprotokolla. Oletkin ehkä törmännyt lyhenteeseen web-sivujen osoitteiden alussa, eikä niin kauan aikaa sitten oli selaimen osoitekenttään kirjoitettava osoite kokonaisuudessaan "http://":n kanssa. Useimmat modernit selaimet lisäävät määrittelyn automaattisesti osoitteeseen. Jos et usko, voit kopioimalla osoitteen ja liittämällä sen esimerkiksi tekstieditoriin kokeilla, että vaikka määrittely ei näy se todella on osa osoitetta.

HTTP toimii asiakkaan (engl. client) ja palvelimen (engl. server) välillä pyyntö-vastaus -periaatteella (engl. request-response). Internetin tapauksessa Web-selain toimii asiakkaana ja verkkoasemalla (engl. host) ylläpidettävä applikaatio toimii palvelimena. Asiakas lähettää pyyntöjä palvelimelle, joka lähettää takaisin vastauksena viestin sekä mahdollisesti pyydetyn tiedoston tai suoritettavaksi pyydetyn funktion loppustatuksen. [1]

Kun ladataan vaikkapa Scala ohjelmointikielen kotisivu asiakas tekee kaikkiaan 32 pyyntöä palvelimelle. Kuten oheisesta kuvasta nähdään, pyynnöt käsittelevät niin sivun html-sisällön ja tyylitiedostot kuin scriptit ja kuvatkin.

Kuvankaappaus Firebug-ohjelmiston tuottamasta pyyntökoosteesta
Kuvankaappaus Firebug-ohjelmiston tuottamasta pyyntökoosteesta ladattaessa sivu osoitteessa http://www.scala.lang.org/

Kuvassa näkyvät pyynnöt ovat kaikki "GET"-tyyppisiä. Ne ainoastaan hakevat tietoa annetusta lähteestä eivätkä esimerkiksi välitä palvelimen suuntaan mitään, kuten lomakkeiden tietojen lähetyksessä käytettävät "POST"-tyyppiset pyynnöt. Status-sarakkeessa näkyvät palvelimen lähettämän vastausviestin paluuarvot (engl. status code, jotka kuvastavat pyynnön onnistumista. Numerolla 2 alkavat koodit kuvastavat onnistumista, näistä yleisin on kuvan näkyvä "200 OK" status. Näistä paluuarvoista saattavat olla ennestään tuttuja "404 Not Found" ja "500 Internal Server Error", joista ensimmäinen tarkoittaa, että pyydetty sivu ei ole tällä hetkellä saatavilla ja jälkimmäinen on yleinen virheviesti, kun palvelimen päässä on jotain vikaa, mutta sen tarkempaa tietoa ei ole saatavilla [2].

MVC

MVC-malli
MVC-arkkitehtuurin toimintaperiaate.

MVC tulee sanoista Model (malli), View (näkymä) ja Controller (käsittelijä) ja se on ohjelmistoarkkitehtuurimalli, joka erottelee ohjelmiston eri tehtävää suorittavat osat omiksi kokonaisuuksiksi. MVC-arkkitehtuuria noudattavassa ohjelmistossa on eroteltu käyttöliittymäluokat (view), käyttöliittymässä tapahtuvia toimintoja kuuntelevat luokat (controller) ja itse toimintalogiikan sisältävät luokat (model).

Sen lisäksi, että MVC-arkkitehtuuri määrittää millaisiin kokonaisuuksiin ohjelmiston osia jaetaan, MVC-arkkitehtuuria noudattavassa sovelluksessa on vasemmalla olevan kuvan mukainen kommunikaatiologiikka. Kuvassa siniset nuolet osoittavat käyttäjän toiminnan ja sen laukaiseman muutoksen kun taas vihreät nuolet osoittavat, miten käyttäjän laukaisema toiminto lopulta välittyy takaisin käyttäjälle.

Käsittelijä lähettää käyttäjän mallille suorittaman operaation mukaisen päivityksen mallille. Mikäli muutos on laillinen, malli muuttuu ja tiedottaa tästä käsittelijää. Tämän jälkeen käsittelijä kutsuu päivittämään näkymän, joka pyytää mallilta uuden muotoisen informaation. Lopulta käyttäjä voi nähdä, mitä hänen toimintansa aiheutti näkymässä. [3] [4]

Tehtäviä

Työotsake:
Oppimistavoitteet:

Lähteet

  1. [1]  Wikipedia. Hypertext Transfer Protocol, 20.5.2013. Saatavilla: http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol viitattu: 28.5.2013
  2. [2]  Wikipedia. List of HTTP status codes, 23.5.2013. Saatavilla: http://en.wikipedia.org/wiki/List_of_HTTP_status_codes viitattu: 28.5.2013
  3. [3]  Wikipedia. Model-view-controller, 17.5.2013. Saatavilla: http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller viitattu: 29.5.2013
  4. [4]  Eckstein Robert, 03/2007. Java SE Application Design with MVC. Saatavilla: http://www.oracle.com/technetwork/articles/javase/index-142890.html viitattu: 29.5.2013