Ammattilaisten kehittämä sovellus ei ole pelkkä satunnainen kasa koodia,
vaan rakentuu valittujen arkkitehtuurimallien ympärille. Arkkitehtuuri
auttaa pitämään sovelluksen sisäisen rakenteen loogisena ja helpottaa
sovelluksen ylläpidettävyyttä ja jatkokehitettävyyttä.
Model-View-Controller (MVC) on perinteinen ohjelmistokehityksen
suunnittelumalli, jonka tärkein tehtävä on eriyttää sovelluksen esitys-
ja logiikkakerros toisistaan ja delegoida sovelluksen sisäisiä vastuita
eri osa-alueille.
Alkuperäisellä MVC-arkkitehtuurilla on ikää yli 40 vuotta, joten se on
vuosien saatossa saanut rinnalleen runsaasti erilaisia muunnelmia ja
muita arkkitehtuurimalleja. Useat web-frameworkit (esim. Laravel, Django ja Ruby on Rails)
käyttävät joko suoraan MVC-arkkitehtuuria tai jotain sen muunnelmaa.
MVC soveltuukin hyvin vaikkapa REST-rajapintojen rakentamiseen.
MVC, tai mikään muukaan sovelluksen sisäinen arkkitehtuuri, ei
kuitenkaan suoraan näy sovelluksen loppukäyttäjälle, eikä edes
palveluntarjoajalle. Tässä blogitekstissä kerromme tarkemmin siitä, mitä
web-sovellusten pinnan alla tapahtuu.
MVC:n ydinperiaate on säilynyt samana vuosien ajan: ohjelmiston rakenne
jäsennetään kolmeen osa-alueeseen, eli malliin (Model), näkymään (View)
ja ohjaimeen (Controller).
Malli, näkymä ja ohjain toimivat vuorovaikutuksessa keskenään ja ovat
usein toisistaan riippuvaisia, vaikka niiden toiminnot suunnitellaan ja
toteutetaan jossain määrin erikseen. Eri osa-alueiden välinen riippuvuus
tarkoittaa sitä, että esimerkiksi muutos mallissa saattaa tarkoittaa
muutoksia myös näkymässä.
Kaaviossa on yksinkertainen MVC, jonka pohjalta on luontevaa suunnitella
ja rakentaa järjestelmän toiminnallisuuksia. Kuvassa on ohitettu
käyttöliittymäkerroksen omat toiminnot, jotta MVC-arkkitehtuuri voidaan
kuvata mahdollisimman yksinkertaisesti.
Sovelluksen ydintoiminto on tiedonhaku: käyttäjä hakee kaikki tallennetut yhteystiedot tietokannasta.
Malli on järjestelmän dynaaminen tietorakenne, joka käsittelee ja
varastoi ohjelmiston sisällä liikkuvaa tietoa. Tietoa hallinnoivat
mallit ovat usein kytkettyinä ohjelmiston toiminnan kannalta oleelliseen
tietovarastoon, kuten relaatiotietokantaan.
Näkymä esittää datan määritetyssä muodossa, joka voi olla esimerkiksi
sovelluksen käyttöliittymä (HTML) tai jokin muu datan esitysmuoto (esim.
JSON tai XML).
Näkymä-käsitettä käytetään web-kehityksessä sekä back-endin, että
front-endin puolella. Perinteisesti näkymät ovat olleet suoraan
käyttäjälle esitettäviä HTML-dokumentteja, mutta nykyisin näkymät ovat
useimmiten käyttöliittymien käsiteltäväksi tarkoitettua dataa.
Ohjaimen tehtävänä on vastaanottaa komentoja ja toimia komentojen mukaisesti tiedon siirtäjänä mallin ja näkymän välillä. Käytännössä tämä tarkoittaa, että ohjain hakee, kirjoittaa tai poistaa dataa mallin kautta ja lopuksi palauttaa uuden näkymän.
Esimerkiksi web-sovellusten back-endissä ohjaimelle tulevat komennot ovat useimmiten HTTP-pyyntöjä. Kun pyyntö on käsitelty, ohjain palauttaa näkymän HTTP-vastauksena.
Vaikka MVC-arkkitehtuurissa ohjelmiston sisäisten osien vastuualueet
erotetaan toisistaan ja voidaan myös rakentaa erikseen, huomioidaan
ohjelmistokehityksessä aina mallin, näkymän ja ohjaimen väliset
riippuvuudet.
Fiksusti suunnitellun ja rakennetun sovelluksen jatkokehitys on
myöhemmin helpompaa, tehokkaampaa ja nopeampaa. Kun sovelluksen rakenne
huomioidaan alusta saakka, säästetään resursseja varsinaisten
ominaisuuksien kehittämiseen.
Kun tarvitset osaavaa sovelluskehityspalvelua, ota yhteyttä!
Prototyypin hyödyntäminen ohjelmistoprojektissa säästää aikaa ja rahaa, kun lopputuotteen käytettävyyttä ja toimintoja voidaan testata jo varhaisessa vaiheessa.
Tarvittavat evästeet ovat ehdottoman välttämättömiä verkkosivuston toimivuudelle. Tähän luokkaan kuuluvat vain evästeet, jotka varmistavat verkkosivuston perustoiminnot ja turvaominaisuudet. Nämä evästeet eivät tallenna henkilökohtaisia tietoja käyttäjästä.