ASP.NET...is het allemaal wel echt?
Door Michiel van Otegem
23 september 2002
Het .NET Framework met ASP.NET als onderdeel is al weer
sinds februari 2002 op de markt, de ontvangst tot nog toe is echter lauw te
noemen. Je gaat daardoor al snel denken dat Microsoft de zaken weer eens veel
mooier wordt voorgesteld dan het is… maar is dat deze keer wel zo?
Het .NET Framework is veel meer dan een nieuwe versie van
Windows, Office of een ander product van Microsoft. Het vormt de basis waarop
nieuwe applicaties gemaakt moeten gaan worden. Deze basis neemt afstand van de
bestaande basis die geleverd werd door Windows, en combineert veel van wat in
de laatste 25 jaar is geleerd over software ontwikkeling. De technieken die in
het .NET Framework gebruikt worden zijn op zich zelf dus niet nieuw, maar de
combinatie van die technieken op een dergelijke schaal wel. Het gevolg (of
misschien juist het doel) is een radicale verandering in de manier waarop we
software, en dus websites, ontwikkelen. Dit moet er toe leiden dat applicaties
sneller en robuuster zijn, maar ook dat ontwikkelaars deze applicaties sneller
en eenvoudiger kunnen maken.
Microsoft software is berucht om het feit dat het crash
gevoelig kan zijn. Bij servers kan dit erg nare gevolgen hebben en dat is een
van de redenen waarom Windows minder dominant is in de server markt, waar een
groot deel werkt met Unix of Linux varianten. Met het .NET Framework lijkt men
het lek boven water te hebben. Gezien de gigantische investering in het .NET
Framework zou het gek zijn als dit niet zo was. Processen die de mist in gaan
kunnen niet langer de server laten crashen, ze worden geïsoleerd en indien
nodig automatisch herstart. Zo kan dus bijvoorbeeld een website niet meer down
zijn door processen die problemen geven. Hoe stabiel het .NET Framework en met
name ASP.NET is, werd gedemonstreerd door het aantal websites dat al op Beta 1 succesvol met ASP.NET werkten. Met name
de websites die over ASP gaan waren heel snel met het adopteren van ASP.NET.
Voorbeelden hiervan zijn ASP Alliance (www.aspalliance.com),
ASPNG (www.aspng.com), ASP Next Gen
(www.aspnextgen.com) en ASPFree
(http://aspfree.com/aspnet/). Dit zijn
allemaal sites met vele bezoekers dus vormden ze een goede testcase. Sinds Beta
1 is er veel veranderd en is het framework en ASP.NET nog aanzienlijk
verbeterd.
Microsoft stimuleert het gebruik van ASP.NET op meerdere
manieren. Ten eerste heeft Microsoft een voorbeeld site gemaakt, genaamd I Buy
Spy (www.ibuyspy.com). Deze site, die
geheel in ASP.NET gemaakt is, bevat o.a. een winkel en een portal. De code
hiervan is helemaal beschikbaar, zodat iedereen kan zien hoe eenvoudig het is
om een website te maken met ASP.NET. Verder heeft het ASP.NET team in de vorm
van het ASP.NET Web Matrix Project (http://www.asp.net/webmatrix)
een freeware tool gemaakt waarmee je makkelijk ASP.NET applicaties kunt maken
in een visuele designomgeving. Daar zit ook een webservertje bij die het
mogelijk maakt om lokaal pagina's te serveren, zonder dat je een volwaardige
webserver geïnstalleerd hebt. Hiermee kun je zelfs op Windows XP Home Edition
ASP.NET pagina's serveren.
Een hekel punt bij websites is de schaalbaarheid en de
snelheid. Het gebeurt regelmatig dat sites met veel bezoekers langzaam zijn en
in sommige gevallen er zelfs helemaal de brui aan geven. In ASP.NET worden
pagina’s automatisch gecompileerd naar een formaat dat de server efficiënter
uit kan voeren. Daarbovenop wordt dit zo mogelijk in het geheugen van de server
opgeslagen om de response tijd verder te verbeteren. Daarnaast bevat ASP.NET
allerlei caching mechanismen. De simpelste hiervan is met één regel code in z’n
werk te stellen en cached de resulterende HTML van de pagina in het geheugen
voor een bepaalde tijd (bijvoorbeeld 30 seconden). Voor een veel bezochte site
waarin gegevens bijvoorbeeld uit een database worden gelezen, kan zo’n
mechanisme alleen al enorm schelen. Dit geldt zowel voor de gebruiker die de
pagina sneller te zien krijgt, alsmede de hoeveelheid werk die de server moet
verrichten. Nadeel is wel dat ASP.NET een behoorlijke hoeveelheid geheugen nodig
heeft om lekker te kunnen lopen. Websites die op meerdere servers uitgevoerd
worden om het aantal bezoekers aan te kunnen hebben ook heel wat voordeel bij
ASP.NET. Gegevens delen tussen die servers is op dit moment een moeilijke zaak,
maar dit is met ASP.NET ook verleden tijd. Zelfs gegevens van één actieve
gebruiker kunnen gedeeld worden tussen de verschillende servers. De gebruiker
hoeft dus niet perse door de zelfde server geholpen te worden.
ASP.NET brengt het ontwikkelen van websites een stap dichterbij
het maken van gewone applicaties. Om functionaliteit in ‘traditionele’
webapplicaties te programmeren moeten we (server)script plaatsen tussen HTML of
een CGI applicatie schrijven in bijvoorbeeld C of Perl die hele HTML pagina’s
genereert. Alle functionaliteit moeten we daarbij expliciet verzorgen. Dat
geldt voor iets simpels als de waarden in een formulier behouden als er fouten
gevonden zijn in de invoer, en zeker voor iets ingewikkelds als het werken met
meerdere servers voor één site. ASP.NET stapt van het traditionele paradigma af
en gaat uit van pagina’s waarin we objecten definiëren. Deze objecten kunnen
formuliervelden zijn, maar ook uitgebreide dingen zoals een kalender die we
kunnen gebruiken om een datum te selecteren. Ook kunnen we zelf dergelijke
objecten (die we controls noemen) maken. Het handige van deze objecten is dat
we ze invoegen in een pagina met tags die heel erg lijken op HTML en daarom
begrijpbaar zijn voor ontwerpers. Nog belangrijker is dat deze objecten in de
browser worden weergegeven als standaard HTML en niet als ActiveX control of
Java-applet, waarvoor speciale browser ondersteuning nodig is. De pagina die we
uiteindelijk in de browser op roepen is in principe voor elke browser die HTML
3.2 ondersteunt goed te zien (en te
gebruiken), ASP.NET past zich automatisch aan aan die browsers, zonder dat we
daar iets voor hoeven doen. Het ontwikkelen van websites wordt hierdoor een
stuk simpeler en kost aanzienlijk minder tijd. De functionele kant van een
website kan naar schatting gemaakt worden in slechts de helft of mogelijk zelfs
een kwart van de tijd die we er nu voor nodig hebben met ASP. Ook is de kans
dat hierbij fouten gemaakt worden aanzienlijk verminderd.
ASP.NET doet er veel aan om het leven van ontwerpers
eenvoudiger te maken en de samenwerking tussen ontwikkelaars en ontwerpers
soepeler te laten verlopen. Ontwerpers kunnen functionaliteit aan pagina’s
toevoegen op een manier die ze bekend voorkomt, omdat die erg lijkt op HTML.
Deze functionaliteit kan gescheiden van de opmaak worden aangeleverd door
ontwikkelaars. Het gebeurt dus zelden dat de een het werk van de ander verknoeit,
omdat er nog een ‘klein’ dingetje verandert moet worden in de opmaak of de
functionaliteit. Doordat ontwerpers makkelijk functionaliteit kunnen toevoegen
zonder dat ze daarbij hulp van ontwikkelaars nodig hebben, kunnen ontwikkelaars
zich concentreren op het verbeteren van functionaliteit of het creëren van
nieuwe functionaliteit. Controls leveren daarbij een goed vehikel voor het
hergebruik van code, zowel binnen een site als voor verschillende sites.
De beste manier om te laten zien dat het bovenstaande ook
echt zo is, is met een aantal simpele voorbeelden. De onderstaande code geeft
een pagina weer met een klikbare kalender om een datum te selecteren.
simplecalendar.aspx
<%@ Page Language="VB"
Culture="nl-NL" %>
<script runat="server">
Sub Calendar1_SelectionChanged(sender As Object, e As EventArgs)
Label1.Text = "U heeft " & _
Calendar1.SelectedDate.ToLongDateString() & _
" geselecteerd."
End Sub
</script>
<html>
<head>
</head>
<body>
<form runat="server">
<p>
<asp:Label id="Label1" runat="server"
Font-Size="Larger"Font-Bold="True">
</asp:Label>
</p>
<p>
<asp:Calendar id="Calendar1" runat="server"
OnSelectionChanged="Calendar1_SelectionChanged">
</asp:Calendar>
</p>
</form>
</body>
</html>
Het is belangrijk op te merken dat de bovenstaande code geen
HTML is maar XML. Omdat de twee erg op elkaar lijken, is er voor ontwerpers
makkelijk mee te werken. Een ander belangrijk punt is het attribuut runat="server", dat er voor
zorgt dat de betreffende code op de server wordt omgezet naar normale HTML. Dat
attribuut kunnen we ook toevoegen aan bijvoorbeeld textbox of een dropdown-list
die in reguliere HTML gemaakt is. Het voordeel daarvan is dat het betreffende
‘object’ beschikbaar is voor code op de server en dat ingevoerde waarden
bewaard blijven als het formulier wordt teruggestuurd naar de browser,
bijvoorbeeld omdat er fouten in de invoer zaten. Het controleren van de invoer
is ook sterk vereenvoudigd. Om bijvoorbeeld te controleren of een veld wel
ingevuld is hoeft alleen de volgende code gebruikt te worden:
<asp:RequiredFieldValidator
id="MijnValidatie" ControlToValidate="Naam" ErrorMessage="U
heeft geen naam ingevuld" runat="server"
/>
Er zijn nog een aantal andere controle mogelijkheden, zodat
het betrekkelijk eenvoudig is om te bepalen of er wel een goed telefoonnummer
of email-adres is opgegeven. Ook is het mogelijk om zelf een validatie functie
te schrijven, om bijvoorbeeld een credit card te controleren of iets met een
waarde in een database te vergelijken.
Dit artikel geeft slechts een heel klein beetje inzicht in
wat er allemaal kan met het .NET Framework en ASP.NET in het bijzonder. Hopelijk
laat het je zien dat het .NET Framework geen grootspraak is. Mijns inziens
heeft Microsoft zelfs voor het eerst iets geleverd dat meer en beter is dan dat
het oorspronkelijk had aangekondigd. Het loont absoluut de moeite om eens te
kijken op sites die over dit onderwerp gaan. Het beste startpunt daarvoor is
Microsoft’s eigen ASP.NET site www.asp.net.
Dit artikel is eerder
verschenen in D-Zone (nummer 4, 2001) onder de naam ".NET Framework... hype of the real
thing?". Het artikel is oorspronkelijk van voor .NET Beta 2, en daarom
aangepast aan de ontwikkelingen sindsdien.
|