Design of generalized search interfaces for health informatics
MVC-arkkitehtuuri (sanoista model-view-controller eli malli–näkymä–käsittelijä) on ohjelmistoarkkitehtuuri, jonka tarkoituksena on käyttöliittymän erottaminen sovellusaluetiedosta. MVC-arkkitehtuuria käytetään etenkin graafisten käyttöliittymien suunnittelussa ja ohjelmoinnissa. Se on kehitetty alun perin Smalltalk-kielen yhteydessä Xerox PARC:issa.
Osat
MVC-arkkitehtuurissa ohjelma jaetaan kolmeen osaan: malliin, näkymään ja käsittelijään.
- Malli (model) kuvaa järjestelmän tiedon tallentamisen, ylläpidon ja käsittelyn (tietokantakuvaus).
- Näkymä (View) määrittää käyttöliittymän ulkoasun ja tietojen näytön esityksen käyttöliittymässä.
- Käsittelijä (Controller) / Ohjain eli kontrolleri vastaanottaa käyttäjältä tulevat käskyt sekä muuttaa mallia ja näkymää vastauksena niihin.
Ominaisuudet
Etuja
- Malli ei riipu näkymästä eikä ohjaimesta.
- Malli voidaan suunnitella, ohjelmoida ja testata riippumatta järjestelmän muista osista.
- Samaan malliin voidaan tehdä erilaisia käyttöliittymiä. Saman järjestelmän tietoon voi olla pääsy esimerkiksi natiivilla graafisella käyttöliittymällä ja webbikäyttöliittymällä.
- Näkymän ja ohjaimen toimintaan voidaan tehdä muutoksia muuttamatta mallia.
- Näkymän ja ohjaimen riippuvuus toisistaan on verrattain pieni.
- Tietonäyttöä (käyttöliittymä) voidaan muuttaa muuttamatta tiedonkäsittelijää (UI-ohjainta).
- Tietokäsittelijää (ja -mallia) voidaan muuttaa muuttamatta näkymää.
- Käyttöliittymän asynkronointi (ei-samanaikaisen tiedonvaihdon toteuttaminen) on helppoa.
Haittoja
- Sovellusaluekuvauksen jalkautuvat UVC-arkkitehtuurin mukaisessa järjestelmässä kolmelle tasolle (tietonäkymä, tietomalli ja tietokäsittelijä). Järjestelmän sisällön ymmärtäminen voi näin muodostua vaikeaksi.
- Malli ei itsessään ohjaa kehittäjiä optimoimaan tietokantahakuja käyttöliittymän tarpeiden näkökulmasta. Tämän vuoksi tietokannasta haetaan helposti tarpeetonta tietoa ja tiedon hakuun käytetään tarpeeseen optimoimattomia SQL-lauseita. Tämä aiheuttaa helposti suorituskykyongelmia laajoissa sovelluksissa. Suorituskykyongelmat voidaan kustannustehokkaasti välttää kiinnittämällä huomiota tähän ongelmaan sovelluskehityksen alusta asti.