Model-view-controller (MVC) -arkkitehtuuri

Monesti WWW-sovelluksissa sotketaan keskenään ohjelmakoodi ja selaimessa näkyvä HTML-koodi. Hiemankaan suuremmissa ohjelmissa tämä aiheuttaa suuria vaikeuksia pitää ohjelmakoodia selkeänä ja tekee ohjelmasta hyvin virhealttiin. Tätä toimintatapaa näkee erityisesti PHP- ja muissa samantyyppisissä kehitysympäristöissä joissa HTML-koodia generoidaan palvelimelta selaimella sitä mukaa kun ohjelman suoritus etenee. Ohjelmassa tulostetaan sopivaa HTML-koodia aina tarpeen mukaan ja näin muodostetaan lopullinen selaimelle annettava HTML-dokumentti. Monesti näissä ratkaisuissa on hankala muuttaa HTML-dokumentin eri osia eri aikaan ja tuloksena on entistäkin sekavampaa ohjelmakoodia.

Parempi ratkaisu olisi pyrkiä pitämään erillään vähintäänkin ohjelmakoodi ja HTML-koodi. HTML-koodia tuotetaan ja muokataan vain tarpeen mukaan DOM- tai muun rajapinnan kautta. Täm ratkaisu vaatii enemmän muistia mutta helpottaa ja selkeyttää monia asioita. Erillisen rajapinnan käyttäminen HTML-koodin tuottamisessa vähentää myös huomattavasti virheitä. Ohjelman rakenne selkiytyy ja yksinkertaistuu aivan samaan tapaan kuin HTML:n ja CSS:n eriyttämisessä.

Edelleenkin voi sovellusta selkiyttää erottamalla toisistaan ne ohjelman osat, jotka käsittelevät tietokantaa/tietovarastoa ja se osa, joka tuottaa lopullisen HTML-koodin. Sovelluksen päälogiikka voisi tuottaa sopivasti käsiteltyä ja järjesteltyä tietoa, joka annettaisiin toiselle ohjelmapalaselle. Tämä toinen ohjelmapuolisko tuottaisi datan pohjalta HTML-dokumentin tai sitten ihan jotain muuta. Käyttöliittymän/näkymän vaihtaminen olisi helppoa.

Monesti Web-sovelluksissa pyritään toteuttamaan MVC-arkkitehtuuria. Se miten hyvin ja selkeästi tämä onnistuu riippuu hyvin paljon käytetystä kehitysalustasta. Paljon on myös tulkinnanvaraa siinä mikä tehtävä kuuluu minkäkin osan toteutettavaksi.

MVC-arkkitehtuurin kohdalla ei kannata liikaa jumiutua ajattelemaan mikä on mikäkin osa missäkin sovelluksess vaan kannattaa miettiä mikä on järkevä tehtävänjako sovelluksen eri osien välillä ja miten saa pidettyä ohjelmansa selkeänä ja hyvin ylläpidettävänä. Monet sovelluskehykset ohjaajat automaattisesti oikeaan suuntaan.

Lisätietoa

Käyttäjien kommentit

Kommentoi Lisää kommentti
Kurssimateriaalien käyttäminen kaupallisiin tarkoituksiin tai opetusmateriaalina ilman lupaa on ehdottomasti kielletty!
http://appro.mit.jyu.fi/web-sovellukset/luennot/mvc/
© Tommi Lahtonen (tommi.j.lahtonen@jyu.fi) <http://hazor.iki.fi/>
2016-01-13 18:18:54
Informaatioteknologia - Jyväskylän yliopiston informaatioteknologian tiedekunta