Ervaringen met het ASP.NET MVC framework

Deel 2 over de ervaringen met het ASP.NET MVC framework

aspnetmvcpreview

Testbaarheid
Veel genoemd als voordeel en dat is zeker terecht: de testbaarheid.
Omdat de (business logica) rol van de view heel klein is ligt alle logica bij de controller of anders gezegd: als je de controller van de juiste data voorziet en de juiste actie aanroept, dan zal deze de juiste data teruggeven en ook de juiste view aanroepen. Dat is natuurlijk mooi te testen: wat een pagina uit je site doet, namelijk het posten van data (via FormPost of Get) naar een actie van een controller, kun je vanuit je testproject ook. Je hebt dus geen last van allerlei verborgen acties die nog in je view worden uitgevoerd. Een plus voor testen

Viewstate
Geen viewstate. Omdat we geen server controls hebben die allerlei state met zich mee dragen hebben we ook geen viewstate. Uitzetten kan in een gewone ASP.NET applicatie natuurlijk ook, maar de wat intelligentere server controls zoals de GridView vinden dat geen goed idee: het event model houdt er dan ook mee op. En geen view state geeft toch al gauw een fikse page size verbetering. Een plus voor filesize.

Bewuster van htmlcode
Een indirect voordeel van het werken met het ASP.NET MVC framework is dat je je veel bewuster bent van de html die je site oplevert. Van een GridView weet eigenlijk niemand wat voor html deze oplevert, en in het geval van een server control is dat ook eigenlijk niet belangrijk. Maar als je je wel van de html bewust wilt zijn, bijvoorbeeld omdat search engine optimalisatie belangrijk is, dan is dat met het MVC framework sneller het geval.

Microsoft’s versie 1.
Het verhaal gaat dat een versie 1 product van Microsoft eigenlijk niet productierijp is. In dit geval is dat in ieder geval niet zo. We hebben vanaf dag één productie kunnen draaien.

Overzicht aspx
Bij een gewone ASP.NET site staat veel code in de code behind file. Ook wordt daar veel opmaak werk gedaan, controls aangemaakt etc.
Met het ASP.NET MVC framework doe je dat allemaal in de view (de aspx / ascx files). Dat geeft soms wel een wat onoverzichtelijke pagina: het wordt al snel een mengelmoes van html tags en for-each loops die door de data heenlopen die de controller aan de view heeft gegeven. Een min voor overzichtelijkheid van de view.

Leercurve
41vsFoLZq9LEen nadeel om er mee aan de slag te gaan is zoals altijd de leercurve. Deze is bij dit framework best aanwezig, want het is niet iets dat je half kunt implementeren en het is ook niet iets dat er even naast hangt: het vervangt een redelijk deel van de ASP.NET kennis die je hebt; o.a. die van de vele server controls die ASP.NET rijk is. Zelf heb ik het boek van o.a. ScottGu gelezen (Professional ASP.NET MVC 1.0) en daarmee heb je de basis in ieder geval snel onder de knie. Een min als je morgen direct moet beginnen. 

Geen server controls
In het begin vraag je je af: waar begin ik aan. Al dat extra werk dat een server control je uit handen neemt. Maar aan de andere kant: het is ook wel vaak gedoe met die controls. Een GridView lijkt heel handig, helemaal als je de voorbeelden ziet met inline editen van data. Maar als je zelf aan de gang gaat, zonder de gesleepte SqlDataSource maar gebruik makend van je DAL, dan moet je vaak toch wel flink wat tweaken. En code als de ItemDataBound, de FindControl, de (Cells[0].Controls[0] as TextBox).Text etc. zijn ook niet altijd even handig. Conclusie: het viel eigenlijk best mee om zonder deze controls aan de gang te gaan. Een GridView is met een foreach loop ook zo opgebouwd, en als je de flow van je site in je hoofd hebt zijn de edit, delete en insert buttons ook zo gemaakt.

Geen abstractie
Het ASP.NET framework biedt een heleboel abstractie aan. De acties binnen een website zijn eigenlijk heel simpel: je doet vanuit de client een GET of een POST, en op de server kijk je welke data er mee is gekomen (via de Form data of de querystring) en afhankelijk van de pagina die wordt geladen en de data die je hebt meegekregen voer je je actie uit en bouw je een nieuwe pagina op.
De hele abstractielaag die ASP.Net daar op heeft gebouwd zoals de Postback, de button_click events als ware het een Windows applicatie, de events die op server controls afgaan: als je de overstap maakte van een windows applicatie leek het zo heel logisch, maar soms maakt de abstractie het moeilijker dan het origineel was. Van een simpele Post wordt een form_load gemaakt met een IsPostback property, een Button_click, een aantal events op een GridView, een findcontrol op de pagina, een OnChange event van een textbox, een databind() van een Repeater en wat al niet meer. Jarenlang een gegeven, maar nu met de ervaring van het MVC framework valt het wel op dat het niet alleen maar simpeler is, zo’n abstractielaag. Een plus voor de overzichtelijkheid van het ASP.NET MVC framework.

Conclusie
Conclusie is dat ik het ASP.NET MVC framework een dikke pluim geef en het volgende keer zeker weer zou inzetten bij een dergelijk project.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s