ASP.NET MVC

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.

[info_box_1 title=”Alustustoimenpiteet”]
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 reittimääritykset.
[/info_box_1]

[info_box_1 title=”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).
[/info_box_1]

[info_box_1 title=”Kontrollerin luominen”]
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 kontrollerin (RouteData-objektista löytyvän controller -arvon perusteella).
[/info_box_1]

[info_box_1 title=”Toiminnon kutsuminen”]
Kontrollerista kutsutaan metodia Execute (toteuttaa liittymän IController metodin), joka selvittää oikean toiminnon RouteData-objektista löytyvän action-arvon perusteella. Toimintometodia kutsutaan käyttäen parametreina RouteData-objektista löytyviä arvoja.
[/info_box_1]

[info_box_1 title=”Näkymän palauttaminen”]
Toimintometodi 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).
[/info_box_1]

u7x9cc0

Navigointi

Social Media