Teknologi perspektivering - ASP, ASP.NET MVC

Hvis du lige er dumpet ind så forsøg at læse Perspektivering af Microsoft teknologier først.

I .NET universet findes der tre forskellige versioner (om man vil) af ASP.NET.

  • WebForms
  • MVC
  • Dynamic Data

Før vi lige går videre med detaljerne, så lad mig prøve at forklare hvordan vi nogensinde er endt op med hele 3 frameworks, som i princippet kan bruges til det samme.

For mange år siden havde vi ét lille kompakt framework til at bygge web applikationer med. Active Server Pages hed det og det findes selvfølgelig stadigvæk. ASP var nemt at have med at gøre fordi der ikke fandtes meget mere end 100 indbyggede funktioner. Herregud, der var 7 forskellige objekter tilgængeligt og havde man brug for yderligere funktionaliet måtte man selv igang i Visual Basic - hvilket de absolut færreste gjorde!

I 2001 kom ASP.NET i den første version. Der var på daværende tidspunkt kun understøttelse for WebForms, og det var derfor kun et fåtal af de eksiternede ASP udviklere der følte sig hjemme i den nye teknologi. Det er en dyr process at skifte platform og eftersom Danske udviklere generelt er meget konservative skete det ikke lige med det samme - hvorfor skifte når det vi har virker ?. Tendenserne hos en ASP udvikler er heller ikke de samme som hos en ASP.NET udvikler og adoptions kurven går kun meget langsom opad.

Jeg var altså vant til at åbne UltraEdit og Access/Enterprise M. hver morgen for at lave dagens arbejde, men det var jo inden der overhovedet var noget der hed .NET eller intellisense. Det passede mig super godt - det gik bare derud af, og det bedste af det hele var at det virkede fint. Og det gør det forøvrigt stadigvæk.

Så WebForms var ment og markedsført som noget der skulle tage over efter ASP 3.0, men sådan gik det altså ikke helt - tværtimod.

Heavy Burden around 1930

 

Har WebForms Fejlet ?

Jeg kan huske de første mange uger med ASP.NET. Det var mildest talt forfærdeligt at sidde i Visual Studio.NET, især fordi man tidligere havde været vant til at intet var type stærkt, at intet skulle kompileres og at man ikke blev forvirret over hvor ens HTML blev generet og hvordan man loope over sit recordset, fordi det gjorde man jo bare selv. Der var rigitg mange nye ting! Men som tiden gik, og jo løsere spændetjøen blev, des mere begyndte man også at holde af mange af de andre ting der fulgte med i .NET pakken.

At WebForms pr. default er total kontrol baseret, og at det i tidernes morgen blev markedsført som værende drag-and-drop har skræmt rigtig mange udviklere væk. Det blev senere et faktum, at mange af de kontroller der fulgte med i ASP.NET WebForms, krævede at man før brug læste en mindre novelle, også viste det sig også at man reelt set skulle holde sig væk fra halvdelen af dem. Jeg tror, at for rigtig mange udviklere var ASP.NET en stor grim klods, som for det første har været enorm svær at forholde sig til, fordi det var så meget anderledes end det man har været vant til. Derfor blev rigtig mange udviklere ved den teknologi de allerede kendte til! Jeg tog springet og har aldrig fortrudt det, også selvom jeg savner noget der er meget mere simpelt!

Når man til gengæld fandt ud af hvilke kontroller der var gode at bruge til netop de projekter man sad med, så åbnede der sig en verden af muligheder. Med det store .NET framework i ryggen og et værktøj (VS) der virklig kunne nogle tricks, så følte man sig lige pludselig parat til projekter man ikke før havde drømt om at bygge. Det ville sådan ca. være det samme som at gå fra en Go-cart til en Porshce GT3.

ASP.NET WebForms har aldrig været en ny version af ASP 3.0. ASP.NET er noget helt andet end ASP og det skulle derfor have været markedsført noget anderledes.

Jeg sad i et open space møde med en af hjernene bag ASP.NET, nemlig Scott Gurthri, og da spørgsmålet om hvorvidt ASP.NET MVC ville tage over i forhold til ASP.NET WebForms svarede jeg som den første i gruppen, at "ja, det tror jeg bestemt det vil". På sigt selvfølgelig. Men straks efter jeg havde sagt det fortød jeg, fordi jeg i et splitsekund havde glemt WebForms styrke!

WebForms bør, efter min mening, bruges til at lave administrations systemer med. Altså steder hvor man får præsenteret data i en eller anden form for kontrol og hvor brugeren har nogle muligheder for at ændre og slette i noget data. I den nære fremtid kan jeg ikke se andre steder hvor der skulle være behov for det. Men det er også en stor og tung byrde!

En Stor Opgave for Microsoft

Nu har jeg før været lidt inde på det: Microsoft er verdensmestre i at udsende ny teknologi, og det gør mit arbejde endnu sværere end i fortiden. Siden jeg startede i det tidlige forår 2008 er der allerede dukket de første 10+ nye teknologi-navne op i min virtuelle værktøjskasse. M, Azure, Astoria, Dublin, Silverlight 2.0 etc...nogle af dem bygger videre på andre teknologier osv, men  det fjerner af den grund ikke spørgsmålstegnet fra mit sind - HVAD skal jeg bruge det til ? HVORNÅR skal jeg bruge det ? Er det BEDRE end det andet vi havde ? Spørgsmål som tilsyneladende ingen andre kan give mig klare svar på - og det skal kunne besvares!

Så det kommer endnu engang ned til en balancegang mellem at være teknologi-liderlig og fornuftig. Hvis du ikke har evnen til at vælge en teknologi fra, så er du ikke en særlig dygtig udvikler - så er du bare nørd!

highway_id482808_size500

WebForms i Forhold til MVC

Første gang jeg prøvede MVC blev jeg tændt af hvor lækkert det var, at være tilbage i et miljø der mindede så meget om den ældre ASP teknologi. Tænk engang at jeg skulle vente 6 år på at genopleve glæden ved at ting vitterligt ikke behøver at være alt for kantet og komplekse. Men efter jeg var færdig med min lille test havde jeg alligevel samme fornemmelse som dengang jeg så WebForms første gang - og straks følte jeg mit nørd-syndrom vende tilbage. Jeg havde endnu engang kastet mig over en teknologi, og var selvfølgelig blevet forelsket i den. Når man er forelsket tænker man ikke på andet end blomster og sukkerknalder, men som tiden går bliver man ligeså frusteret over de samme, eller nye ting ved den du har forelsket dig i. Uanset om det er din kone eller en teknologi.

Men som tidligere har sagt så er teknologi ikke bare teknologi, så selvfølgelig er der teknologi der er meget bedre end andet. F.eks er ASP.NET meget hurtigere end ASP! Og ASP er meget nemmere at gå igang med end ASP.NET!

Rent praktisk så gør MVC det muligt at lave mere testbare løsninger fordi logikken bør være så fjernt separeret fra htmlen som muligt. Men gør det nu reelt set også det ? Hvor fjern kan din kobling blive imellem de forskellige lag og slipper vi helt af med "plumbing" kode ? Tænk lidt over det!

Test eller ej, så er MVC også meget mere fleksibelt end WebForms. Du har ikke adgang til mange af de tunge kontroller som i WebForms og du skal selv sørge for at lave din HTML og holde state - det hele føles lidt mere let-på-tå og tættere på virkligheden. Du kan stort set også slippe for at bruge en code-behind fil, men til gengæld skal vi så have HTML og server kode blandet sammen - "back in the days" var det jo netop det WebForms skulle sætte til livs - og det bryder jeg mig heller ikke særlig meget om!

En anden ting som jeg hurtigt er blevet træt af, er at du et størrer antal af filer end du har med WebForms eller ASP. Du har i værste tilfælde 1 view med codbehind + en controller klasse + en model klasse + evt. et API som ligger i et andet projekt. Det føles næsten mere indviklet end WebForms end "de" siger det er.

Microsoft er også begyndt at bruge sitet codeplex.com som et offentligt repositorie til nye versioner og tilføjelser til bla. ASP.NET MVC. Udover at være en meget anderledes og helt ny måde at komme med udmeldinger på (i Microsoft er dette et ret voldsomt træk), så kan ret mange udviklere slet ikke identificere sig med codeplex. Jeg tror det er fordi man prøver at lave en seperation imellem de forskellige målgrupper, men jeg tvivler på det kommer til at virke.

Udover at være en ny version af ASP.NET så har Microsoft valgt at pakketere JQuery sammen med MVC og fremtidige versioner af ASP.NET. Så nu skal man også til at lære et javascript bibliotek. Det kan betyde at teknologi-nørderne nu igen skal til at kode deres ting om - vi skal bare lige lære teknologien først!

Så nu er det blevet en trend at lave spaghetti kode så længe man bare tester den og det er ender ud med en kompileteret dll.

Hvis du ikke har forstået det allerede så skal MVC i modsætning til WebForms bruges til en web-frontend, men lad være med at sige at det ikke minder lidt om ASP eller for den sags skyldd PHP :0)

169545568_051f08387f

 

WebForms og MVC i Samme Applikation.

Ja, det er en glimrende idé, og det er sådan de 2 teknologier skal bruges når de være i samme applikation.

MVC som en fleksibel frontend og WebForms som en backend der sagtens kan tweakes hvis der er behov for det.

Så fik vi alligvel tilføjet 2 gode ting til vores nye værktøjskasse!