ASP.net is een nieuwe, krachtige technologie voor het creëren van dynamische webpagina's. Het vormt een bundeling van twee technologieën : Active Server Pages (ASP) en .net.
Je hoeft in principe geen ASP te kennen om te starten met ASP.net, een basiskennis HTML is voldoende om van start te kunnen gaan.
Met ASP.net kan je websites maken in de voor jou meest geschikte taal : VB.net, Jscript, C#, of een combinatie van deze talen. In deze cursus zullen we C# als basistaal gebruiken, ik ga er ook van uit dat je reeds over een basiskennis C# beschikt vooraleer deze cursus te volgen.
ASP.net stelt je in staat binnen je toepassing aangepaste pagina's voor verschillende gebruikers te maken, gebruikers te 'volgen' doorheen de website, informatie in een database of XML-bestand op te slaan.
Statische webpagina's
Wat is een statische webpagina ?
Een statische webpagina is een pagina waarvan de auteur de exacte inhoud en lay-out op voorhand heeft vastgelegd. De pagina is bij elk bezoek en voor elke gebruiker onveranderlijk.
Om een statische webpagina te maken gebruik je een teksteditor en sla je het bestand op met een extensie .htm of .html.
Voorbeeld :
<html>
<head>
<title>Statische webpagina</title>
</head>
<body>
<h2>Welkom</h2>
Deze pagina is een voorbeeld van een <b>statische</b> webpagina.
</body>
</html>
Om het even wanneer een client deze pagina bezoekt, ze zal er steeds hetzelfde uitzien. De inhoud van de pagina was al bepaald voor het request van de client werd gemaakt.
Hoe worden statische webpagina's aangeboden?
Een webauteur schrijft een page in pure HTML en slaat deze op als HTML-bestand op de server.
Een gebruiker voert een request naar deze pagina uit
De server localiseert het HTML-bestand en biedt deze aan als HTML-stream
De server stuurt de HTML-stream over het netwerk naar de browser
De browser verwerkt de HTML en toont de pagina.
Statische pagina's zijn gelimiteerd doordat alle inhoud al vooraf in de pagina aanwezig is. In een HTML-pagina kan je bijvoorbeeld de huidige tijd niet weergeven, doordat je als auteur niet op voorhand weet wanneer de gebruiker de pagina zal opvragen.
Dynamische webpagina's
Er zijn twee manieren om dynamische webpagina's te creëren: client-side en server-side dynamische webpagina's.
Client-side dynamische webpagina's
Bij deze pagina's worden naast HTML-instructies ook instructies naar de browser gestuurd waarmee de browser de pagina interactief kan aanpassen. Deze meegestuurde instructies moeten door de browser wel ondersteund en dus begrepen worden. Javascript en VBscript zijn twee voorbeelden van talen die voor client-side scripting worden gebruikt.
Een webauteur maakt een HTML-file. Hij schrijft ook instructies in een andere taal. Deze instructies kunnen in de HTML-code vervat zijn of in aparte bestanden zijn opgeslagen.
Een gebruiker voert een request naar deze pagina uit
De server localiseert het HTML-bestand en eventueel andere instructie-bestanden
De server stuurt dit alles naar de client
De browser verwerkt zowel de HTML als de andere instructies (vb. Javascript )
Voorbeeldtechnologieën:
Javascript: dit is de originele browser-scripttaal. Het ontstond door een samenwerking met Sun -de makers van Java- en Netscape, die een scripttaal met de naam Livescript hadden ontwikkeld. Javascript is gemakkelijker te leren dan Java. Het werd beïnvloed door de taal Java, die op zijn beurt ideeën heeft gehaald bij de programmeertaal C.
Javascript heeft een ander doel dan de programmeertalen Java en C : ontwerpen van kleine, interactieve toepassingetjes in een browser.
Microsoft ontwikkelde ook zijn eigen versie van deze scripttaal onder de naam Jscript.
VBScript: In Internet Explorer 3.0 introduceerde Microsoft hun eigen scripttaal VBscript, afgeleid van de programmeertaal Visual Basic. Het was de bedoeling hiermee de strijd aan te gaan tegen Javascript. VBscript is echter enkel bruikbaar met Internet Explorer en bijgevolg ligt de keuze bij client side scriptig voor het Internet voor de hand : Javascript.
ActiveX Controls: een alleenstaand stukje programmacode geschreven in een taal als C++ of Visual Basic. Het op zichzelf staand programma kan in een webpagina ingebed worden met de OBJECT - tag. Hier hebben we weer te maken met een technologie oorspronkelijk ontwikkeld door Microsoft en dus niet door alle browsers ondersteund.
ActiveX-componenten kunnen ook meer functionaliteiten uitvoeren dan VBscript of Javascript, zoals manipulatie van het register of van bestanden op de machine van de gebruiker. Vandaar dat ze vaak geweerd worden om beveiligingsredenen.
Java-Applets: Java is een platformonafhankelijke programmeertaal. Het principe van een Java-applet is het maken van een bestand dat door een Java Virtual Machine op de clientcomputer kan uitgevoerd worden. Java-applets worden standaard met een OBJECT of ook wel met de APPLET-tag ingevoegd in een webpagina.
Curl: een nieuwere ontwikkeling op client-side gebied is Curl. Ook hiervoor moet eerst een Curl-plugin worden geïnstalleerd voor de browser de bestanden kan uitvoeren.
Meer op www.curl.com
Server-side dynamische webpagina's
Deze keer schrijft de webauteur instructies hoe de server de HTML-output moet genereren. De server zal de instructies in de gevraagde webpagina dus eerst zelf moeten uitvoeren en daarna het bekomen resultaat naar de browser sturen.
Een webauteur schrijft instructies hoe de HTML moet worden gegenereerd
Een gebruiker doet een request voor de pagina via zijn browser
De server localiseert het bestand met de instructies
De server volgt de instructies om HTML te genereren
De server stuurt de pas gegenereerde HTML als output naar de browser
De browser verwerkt de HTML en toont de pagina
Het verschil is hier dat het verwerken van de instructies gebeurt op de server, vooraleer de pagina naar de gebruiker wordt gestuurd.
Dit betekent dat de programma-instructies verwerkt worden op de server en dat we er (zoals bij client-side scripting) niet over hoeven te waken dat de browser de instructies zal begrijpen.
Zoals je wellicht reeds veronderstelt, volgt ASP.NET dit laatste systeem.
Voorbeeldtechnologieën:
CGI : Common gateway interface is een manier om scripts op een server te plaatsen die gebruikt worden om dynamische webtoepassingen te maken. CGI wordt onder de vorm van een module aan een webserver gekoppeld. Het bestaat al heel wat langer dan ASP en nog steeds gebruiken vele websites deze technologie. Dergelijke scripts worden ontwikkeld in programmeertalen als C, C++ en Perl.
ASP: Active Server Pages wordt nu benoemd als klassieke ASP. In ASP werd een scripttaal gebruikt om dynamische webpagina's te maken. VBscript werd hierbij meest gebruikt, maar ook Javascript (of zelfs Perlscript) behoorden tot de mogelijkheden. ASP is een module (asp.dll) die je koppelt met de webserver, deze module verwerkt de scriptinstructies op de ASP-pagina's op de webserver en retourneert HTML naar de browser.
Nadelen hierbij zijn het gebruik van scripttalen die eigenlijk slechts afgeslankte versies zijn van de basistalen waarbij je dus minder mogelijkheden hebt en vooral het feit dat je scriptfragmenten gemixed tussen de HTML instructies staan wat nogal vaak aanleiding geeft tot 'spaghetticode'. De performantie kon hierdoor behoorlijk laag zijn. Een ander nadeel ligt bij de ondersteuning door de webserver, waarbij IIS eigenlijk de enige server is de ASP ten volle ondersteunt.
JSP: Java Serverpages is een technologie die je toestaat HTML ( of XML) elementen te combineren met Javacode. JSP werd geïmplementeerd door verschillende webservers. JSP is heel krachtig en performanter dan ASP.
Meer hierover op bij Sun
Coldfusion: Coldfusion is een module die geïnstalleerd dient te worden op de websserver. Coldfusion gebruikt een speciale set tags die geïnterpreteerd worden door de Coldfusion Server Software.
PHP: vroeger Personal Home Pages maar omgedoopt tot PHP Hypertext Preprocessor is een andere scripttaal om dynamische webpagina's te maken. Wanneer een bezoeker een PHP-pagina opvraagt verwerkt de server de PHP instructies en stuurt het resultaat naar de browser.PHP is open-source en platformonafhankelijk. De PHP-syntax is te vergelijken met C en Perl. Vandaar dat dit voor vele ontwikkelaars een hoge drempel vormt.
ASP.NET: ASP.NET is afhankelijk van een module die moet zijn geïnstalleerd op de server. Deze module (aspnet_isapi.dll) doet niet alle werk en geeft een aantal taken door aan het .NET Framework. We gaan er hier niet te uitgebreid op in, daar de rest van de cursus over ASP.NET handelt.
ASP.net installeren
Voor het maken van ASP.net toepassingen is volgende software nodig:
Windows 2000 / 2000 server / XP / 2003 server
Met Visual Studio 2003: Internet Information Server (IIS) versie 5 / 5.1 / 6
Controleer of dit geïnstalleerd is via Configuratiescherm > Software > Windows onderdelen...
Je kan IIS beheren via het Configuratiescherm > Systeembeheer ... of via Start > uitvoeren > inetmgr.exe
Visual Studio 2005 of Visual Web Developer Express: een webserver is meegeleverd, zodat je niet noodzakelijk over IIS hoeft te beschikken
MDAC: een recente versie van Microsoft Data Access Components, te verkrijgen via www.microsoft.com/data.
het .NET Framework: Win 2000/XP gebruikers installeren het .NET framework, te verkrijgen via: www.microsoft.com/downloads (zoek op .net framework)
ASP.net testen
Test met een eenvoudige tektverwerker
Voor het maken van ASP.net toepassingen kan je gebruik maken van een eenvoudige tekstverwerker (zoals kladblok) maar bestaan er ook heel wat geavanceerde editoren:
Visual Studio.net 2003 / 2005: geïntegreerde ontwikkelomgeving van Microsoft voor het ontwerpen binnen het .net-framework. Dit wordt de standaard-editor voor deze cursus.
...
Wanneer je beschikt over voldoende rechten om IIS te configureren, dan maak je een virtuele map CursusASPNET aan die wijst naar de map die je voor de cursusvoorbeelden wenst te gebruiken. In deze map heb ik een submap aangemaakt met de naam h1 (hoofdstuk 1).
In deze map plaats ik het bestand tijd1.aspx, gemaakt met kladblok (je kan deze test gerust ook uitvoeren met Visual Studio.net):
<html>
<head>
<title>Webservertijd</title>
</head>
<body>
<h1>Welkom</h1>
In webserverland is het nu :
<%= System.DateTime.Now.ToString() %>
</body>
</html>
Test met Visual Studio.Net
Hetzelfde voorbeeld kan je maken in Visual Studio.Net:
Kies voor een nieuwe Web Site, location: file system, language: Visual C#
Kies een locatie ...\ASPNET20\Beginnen
VS 2003: Kies als locatie http://localhost/h1/tijdVS1
Merk op dat de standaardlocatie voor webbestanden de map c:\inetpub\wwwroot is, je zal daar de webbestanden terugvinden die je maakt met VS.net. Je kan natuurlijk via IIS de locatie van de standaardmap aanpassen.
Zorg voor source-weergave (niet in design)
Doe volgende aanpassingen in de code:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<h1>Welkom</h1>
In webserverland is het nu <%= System.DateTime.Now.ToString() %>
</div>
</form>
</body>
</html>
Voer het project uit.
Hierbij wens ik op te merken dat de manier waarop hier geprogrammeerd wordt niet overeenstemt met de filosofie van Visual Studio.Net, we liggen hier voorlopig niet van wakker.
Merk ook op dat Visual Studio.Net in de map 'Beginnen' aantal bestanden heeft geplaatst, de functie ervan zal in de loop van de lessenreeks aan bod komen.