ASPNL logo (1 kb)
zaterdag 17 mei 2008




Microsoft MVP

.NET Codewise Community
<< vorige | overzicht | volgende >>

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.

<< vorige | ^ naar boven | overzicht | volgende >>
copyright 2000-2007 ASPNL