Sök på tekniken.nu

Om tekniken.nu

På tekniken.nu bloggar Iteams konsulter om det som ligger dem varmast om hjärtat - teknik.
www.iteam.se

Prenumerera på tekniken.nu

Bloggportalen.se
Bloggtoppen.se
Top Datorer bloggar
Web Analytics

Clicky

En självklarhet!
Teknikbloggen logotype

MVC-ramverk för ASP.NET

2007-11-29 13:04 - Utvecklingstips av Anders Bornholm
Anders Bornholm
Anders Bornholm
Systemutvecklare
Iteam

Arkitekturen Model - View - Controller, oftast förkortad MVC, uppfanns redan 1979 under arbetet med programspråket Smalltalk. Grundidén är (precis som med många andra arkitekturer) att tydligt separera presentation, affärslogik och data från varandra. Såhär fungerar MVC (ursäkta lite svengelska här och var):

  • Model är den komponent som representerar data och innehåll. Model motsvarar saker i verkligheten, t.ex. produkt, kund eller order.
  • View är den komponent som skapar ett användargränssnitt för en modell. Varje modell kan ha många olika views. Det är viktigt för separationen att modellen inte känner till något och inte förutsätter något om sina views. På samma sätt ska en view inte förutsätta något om sin controller utan bara skicka events för det användaren utför.
  • Controller är den komponent som hanterar användarinteraktion och styr affärslogiken. Controllern tar t.ex. emot knapptryck och inmatningar, uppdaterar modellen med nytt innehåll och uppdaterar modellens view. Det är också controllern som bestämmer vilken view som ska visas för en modell, om det finns flera.

I ASP.NET idag kan man säga att ASPX-/ASCX-sidan utgör view, och codebehind för sidan utgör controller. Hur man implementerar model styrs inte - det väljer utvecklaren själv från fall till fall. Problemet med ASP.NET är att controller (codebehind) och view (ASPX) är väldigt hårt knutna till varandra. Controllern anropas samtidigt som view och man måste krångla ganska mycket för att låta en controller välja en annan view (i princip göra en redirect).

Det nya MVC-ramverket för ASP.NET innebär en äkta MVC-arkitektur. Postbacks kommer t.ex. inte längre att skickas till codebehind, utan alltid till controllern för den objekttyp man arbetar med. Alla delar är sammankopplade med interface, vilket gör att det är lätt att byta ut stora delar vid testning (man kan t.ex. byta ut alla controllers mot dummy-objekt för att testa sina views, eller byta ut alla views för att göra smarta unit tests).

Det ska bli mycket intressant att se om MVC helt kommer att ersätta ASP.NET som det fungerar idag. MVC-ramverket förväntas komma i .NET Framework 3.5 SP 1, ganska snart.

Läs mer om ramverket i Scott Guthries blogg (han är en av utvecklarna i projektet).
Läs mer om arkitekturen MVC på WikiPedia.
Svenske bloggaren Fredrik Normén skriver också mycket om MVC-ramverket, ofta ur ett praktiskt perspektiv (hur man faktiskt använder det).

... och du vet väl att Iteam just nu söker duktiga medarbetare? Läs mer på iteam.se

Andra bloggar om:
2007-11-29 15:19 av Erik Hjortsberg
Vill man köra MVC i .NET redan idag så kan man med fördel använda sig av Castle-projektet: http://www.castleproject.org/
Förutom MVC så använder det sig flitigt av NHibernate och Inversion-of-Control.
Jag spår att efter MVC kommer IoC vara nästa grej som MS skapar ett nytt ramverk för.
2007-11-29 16:32 av Anders Bornholm
För den som undrar vad Inversion of Control (IoC):
http://en.wikipedia.org/wiki/Inversion_of_control

Kommentera

Namn

Email

URL

Kommentar

Skriv vad som står i bilden till höger