Ik denk dat het voor het blog ook handig is een categorie aan te maken waar we af en toe gewoon links kunnen plaatsen. Kom geregeld zaken tegen waar ik van denk, hé dat is handig om te delen.
Maar goed, ik wil het vandaag hebben over ASP.Net MVC 2. Momenteel ben ik bij de klant bezig een nieuw webproject. Globaal komt het er op neer dat ze een generieke web based beheersomgeving willen hebben. Toen dit project begon was net ASP.Net MVC 2 een paar dagen uitgebracht, wat een betere kans om dit eens te testen als het gewoon in praktijk te gaan gebruiken. Ik heb me altijd voorgenomen om bij versie 2 van ASP.Net MVC het eens te evalueren aangezien ik ooit iemand met ASP.Net MVC 1 heb zien worstelen toen het net uit was en zoals meestal het geval is bij MS producten duurt het even voor een technologie "volwassen" geworden is. Dit was echter bij v1 ook al het geval en v1 wordt dan ook al veelvuldig gebruikt. Echter was de documentatie ervan in het begin wat schaars. Omdat v2 wel voortborduurt op v1, gelden alle principes die voor v1 gelden ook voor v2.
Waar komt het op neer:
ASP.Net MVC is een uitbreiding op ASP.Net. Het kan naast webforms draaien, maar vergt wel een andere manier van werken. Zaken als: ViewState, Postbacks, etc zijn niet standaard meer beschikbaar. Ook server controls zijn niet te gebruiken in ASP.Net MVC. Het is daarom ook niet voor elk project even geschikt.
ASP.Net MVC is een "Model 2" implementatie van het [MVC pattern] . Mensen die ooit gewerkt hebben met bijvoorbeeld CakePHP of Ruby on Rails zullen veel bekende dingen tegenkomen.
In het begin vraag je je wellicht af waarom je het zou gebruiken, het lijkt alsof je terug in de tijd gaat en alles weer zelf in HTML moet maken i.t.t. de handige server controls die Webforms ons biedt.
Waar is het dan wel geschikt voor?
Voordelen:
- Flexibiliteit: Volledige controle over de HTML: geen lelijke hidden viewstate of gegenereerde HTML meer, maar gewoon juiste validerende XHTML Strict.
- Testability (door het lostrekken van de views, controllers en het model kunnen deze zaken vaak los van elkaar ge-unittest worden. Daarnaast werkt het vrij goed i.c.m. mocking frameworks en kom je met de basis Dependancy Injection een heel eind om nuttige afgezonderde unit tests te schrijven)
- Leesbaarheid van de ASP.Net code (alles zit van zichzelf al netjes gescheiden -> alleen weergave in view, etc.)
- Ingebouwd URL routing framework
- Geweldige integratie met JQuery (wordt standaard ook meegeleverd in project template), omdat je volledige controle over de HTML hebt ook geen problemen met het koppelen van server controls aan jquery events e.d.
Simpelweg installeren van ASP.Net MVC 2 op je development machine (en natuurlijk webserver). Downloaden doe je op:
http://www.microsoft.com/downloads/details.aspx?FamilyID=C9BA1FE1-3BA8-439A-9E21-DEF90A8615A9&displaylang=en
Na installatie krijg je extra Visual Studio templates voor ASP.Net MVC 2 projecten.
Note: Het is gewoon mogelijk ASP.Net MVC 1 naast ASP.Net MVC 2 te draaien op één machine.
Hoe leer je het?
Het makkelijkste is het doorwerken van de z.g.n. Nerddinner tutorial, deze is te vinden op:
http://nerddinnerbook.s3.amazonaws.com/Intro.htm
Deze tutorial is voorlopig alleen nog beschikbaar voor v1, maar omdat v2 gebouwd is bovenop v1 gelden de principes nog steeds. Voor de nieuwe functionaliteit in v2 kan ik alleen maar aanraden om de weblogs van Scott Gu (http://weblogs.asp.net/Scottgu/) en Phill Haack -> (http://haacked.com/) bij te houden.
Een andere interessante webcast over het maken van MVC apps i.c.m. JQuery is:
http://live.visitmix.com/MIX10/Sessions/EX10
(PS bij bovenstaande link staan nog wel meer interessante links m.b.t. sessies van de MIX conferentie afgelopen maand. Voor geinteresseerden, de keynote van de eerste dag over Windows Phone 7 is ook erg interessant!)
Conclusie:
Na een tijdje ermee gewerkt te hebben ben ik er echt positief over te spreken. De flexibiliteit en controle die je hebt is enorm. De voordelen van prototyping (en sleur en pleur) die je hebt bij Webforms ben je wellicht kwijt, maar het is toch nooit leuk om iets quick en dirty in elkaar te zetten om je vervolgens in allerlei omwegen te moeten wringen om alle details pixelperfect in elkaar te krijgen. Ik vind het zeker een aanrader en wil iedereen dan ook zeker aanbevelen hier eens naar te kijken.
Ik kan het nog steeds niet helemaal accepteren dat MVC maar ga er toch weer eens goed naar kijken. Ik heb overigens een aparte pagina "Links" toegevoegd. Hoop dat dat een beetje aansluit bij wat je wilt. Anders moeten we afspreken om een standaard label te gebruiken voor "Quick links"..
BeantwoordenVerwijderenLinks pagina lijkt me prima!
BeantwoordenVerwijderenIk had in het begin ook moeite met het idee van MVC en de gedachte erachter. Maar nu ik er mee bezig ben begint het me steeds meer aan te spreken.