ASP.NET MVC on web-ohjelmointiin tarkoitettu ASP.NET:iin perustuva ohjelmistokehys. Nimensä mukaisesti se noudattaa MVC-arkkitehtuurin periaatteita. Lisätietoa löytyy englanniksi mm. ASP.NET MVC:n virallisilta sivuilta ja suomeksi täältä.
MVC
MVC tulee sanoista
Model - View - Controller eli
Malli - Näkymä - Kontrolleri(/ohjain). MVC-periaatteen mukaisesti sovellus jaetaan näihin kolmeen kerrokseen, joiden tehtävät ovat
Malli huolehtii tiedon käsittelystä
Näkymä huolehtii tietojen esittämisestä (käyttöliittymä)
Kontrolleri toimii linkkinä mallin ja näkymän välillä muuttaen niitä käyttäjän käskyjen mukaan
MVC:n toteutus ASP.NET MVC:ssä
Malli voi olla esim. tietokannasta haettua tietoa, tiedosto tai vaikka koodissa luotu olio.
Näkymä voi olla esim. websivu (html), xml-tiedosto, json-muotoinen teksti tai kuva.
Kontrollerit ovat erityisiä luokkia, jotka periytyvät
Controller-luokasta (
System.Web.Mvc.Controller) ja joiden nimi on "Controller"-loppuinen.
Kontrollerit muodostuvat yhdestä tai useammasta toiminnosta (action), jotka ovat julkisia metodeita. Yksi olennainen osa on vielä Reititys (routing), jonka tehtävä on sivun osoitteen perusteella ohjata pyyntö oikeaan kontrolleriin ja sen toimintoon.
Sivun elinkaari
Kaikki lähtee siitä, että käyttäjä tekee sivupyynnön. Tämä voi tapahtua vaikkapa naputtelemalla osoite selaimeen, seuraamalla linkkiä tai lähettämällä sivustolla oleva lomake.
Jos web-sovellus ei ole vielä käynnissä (kukaan ei ole vieraillut sivustolla vähään aikaan), se käynnistetään. Tällöin kutsutaan
Global.asax.cs-tiedostossa olevaa
Application_Start -metodia. Tuolta kutsutaan edelleen metodia
RegisterRoutes, jossa rekisteröidään
Reititys.
Pyyntö annetaan MvcHandler-luokan käsiteltäväksi, joka käy läpi kaikki reittimääritykset järjestyksessä ja yrittää sovittaa osoitetta (esim. tuotteet/1/tiedot) niihin. Sopivan reitin löytyessä MvcHandler luo objektin RouteData, johon sijoitetaan reitissä olevat parametrit, kuten controller ja action (kontrolleri ja toiminto).
Seuraavaksi kutsutaan
MvcHandler-luokan metodia
ProcessRequest (toteuttaa liittymän
IHttpHandler metodin), josta edelleen kutsutaan
ControllerFactoryn (luokka, joka toteuttaa liittymän
IControllerFactory) metodia
CreateController. Tuo metodi palauttaa
Kontrollerit (
RouteData-objektista löytyvän
controller -arvon perusteella).
Kontrollerit kutsutaan metodia
Execute (toteuttaa liittymän
IController metodin), joka selvittää oikean
Kontrollerit RouteData-objektista löytyvän
action-arvon perusteella. Toimintometodia kutsutaan käyttäen parametreina RouteData-objektista löytyviä arvoja.
Kontrollerit palauttaa objektin tyyppiä
ActionResult, mikä voi olla esim. websivu, kuva tai json-teksti.
Controller-luokan (josta kontrollerit yleensä periytyvät) metodi View palauttaa ViewResult-tyyppisen objektin, joka käyttää näkymänä websivua. Tällöin käytetään kontrollerin ominaisuutta ViewFactory palauttamaan websivu oikeasta paikasta (tiedostosta).