# Programmeren in ASP.NET/Inleiding

ASP staat voor Active Server Pages en is van oorsprong een Microsoft-technologie. ASP.NET (spreek uit: ASP dot NET) is de opvolger van ASP en onderdeel van het .NET (dot NET) Framework van Microsoft.
ASP.NET is een manier om op een webserver-pagina's aan te maken met behulp van programma-code. Interessant hierbij is dat je vaste HTML-code kunt combineren met variabele inhoud die door je programma geproduceerd wordt.
Hierdoor kunnen met ASP.NET websites gemaakt worden met een dynamisch karakter. We bedoelen hiermee niet (interactieve) animaties, maar websites die aan de hand van acties van de gebruiker verschillende gegevens weergeven. Met enkele pagina's kun je een website maken, die duizenden mogelijke resultaten kan produceren, afhankelijk van wat de bezoeker vraagt.
Bovendien kun je duizenden gebruikers laten gebruik maken van hetzelfde programma, waardoor onbegrensde mogelijkheden ontstaan.

## Toepassingen

Typische toepassingen van ASP.NET zijn:
* Verwerken van formuliergegevens (pagina's die door gebruikers ingevuld werden).
* Toegang tot databanken via het internet:
* E-commerce: gebruikers kunnen producten opzoeken en bestellen
* Werknemers kunnen via het internet gegevens invoeren in de bedrijfsdatabank
* Opzetten van een discussieforum, waar bezoekers van mening kunnen wisselen
* Opzetten van een prikbord, waar bezoekers boodschappen kunnen "opprikken"
* Versturen van e-mail.
* Beheren van cookies.
* Bewaren van data als tussen verschillende pagina's wordt "gehopt".
* Dynamisch presenteren van data uit tekstbestanden.
* Polls of enquêtes (bezoekers kunnen een keuze maken tussen een aantal meningen)
* Aanbieden van informatie in de taal van de bezoeker
* Doorzoeken van websites
* Aanbieden van webservices. Dit zijn diensten die door andere websites kunnen opgeroepen worden. Je kunt ook webservices van anderen gebruiken op jouw site.

## Geschiedenis

De tabel hieronder geeft een lijst van de verschillende versies van het .NET-framework (en dus van ASP.NET).
| Datum | Versie | Opmerkingen |
| 16/1/2002 | 1.0 | |
| 24/4/2003 | 1.1 | Verscheen samen met Windows 2003 Server |
| 7/11/2005 | 2.0 | Codenaam Whidbey. Verscheen samen met Visual Studio 2005 en SQL Server 2005 |
| 6/11/2006 | 3.0 | Vooral gebruikt voor Windows Vista, voor ASP.NET zijn er geen nieuwigheden. |
| 19/11/2007 | 3.5 | Verscheen samen met Visual Studio 2008, bevat ook ASP.NET AJAX |
| 12/04/2010 | 4.0 | Verscheen samen met Visual Studio 2010, bevat ook dynamics |
In dit boek wordt versie 2.0 gebruikt.

## Wat moet je al kennen?

* HTML
* Ontwerpen van webpagina's
* Visual Basic.NET
* Basis van SQL

## Hoe werkt het?

Zoals een 'gewone' website uit HTML-bestanden bestaat, bestaat een ASP.NET-website (of ASP.NET -applicatie) uit ASP.NET-pagina's. Een ASP.NET-pagina lijkt op HTML, maar bevat daarnaast ook scripts die op de server worden uitgevoerd voordat het resultaat naar de browser gestuurd wordt. Met die scripts kunnen bijvoorbeeld resultaten uit een database worden weergegeven.
Als een browser een HTML-bestand opvraagt, wordt de inhoud hiervan onveranderd naar de browser gestuurd. Bij ASP.NET is dat anders, daar gebeurt het volgende:
* een browser vraagt een ASP.NET-bestand op;
* de webserver roept ASP.NET aan;
* ASP.NET leest het ASP.NET-bestand in;
* ASP.NET voert de (server-)scripts in het bestand uit;
* ASP.NET maakt uiteindelijk een pagina aan die nog alleen uit HTML bestaat.
* Het resultaat wordt als standaard HTML naar de browser gestuurd.
De gebruiker krijgt dus niet de originele pagina, maar een nieuwe pagina, die op het moment zelf werd gemaakt.
Omdat ASP.NET als gewoon HTML-bestand naar de browser wordt gestuurd, maakt het niet uit met welke browser je het bekijkt. Dit betekent ook dat de programma-(script)-code die je schrijft veilig is, ze wordt namelijk niet meegestuurd naar de browser.

## Vergelijking met andere serverscripts

ASP.NET is niet de enige serverscripttaal. Er zijn meerdere scripttalen beschikbaar, afhankelijk van de fabrikant en van het besturingssysteem van de server.
Deze tabel toont de meest voorkomende:

## Wat zijn ASP.NET-bestanden?

ASP.NET-bestanden zijn tekstbestanden die naast tekst ook HTML-codes en specifieke commando's kunnen bevatten. De extensie van het bestand moet aspx zijn. Anders wordt het bestand niet door de ASP.NET-engine verwerkt.
ASP.NET-bestanden werken enkel indien op de webserver de ASP.NET-software werd geïnstalleerd.

## Wat heb je nodig?

Om ASP.NET-pagina's te maken heb je nodig:
* een programma om pagina's te schrijven
* een webserver die ASP.NET ondersteunt, om je pagina's uit te testen
Om ASP.NET-pagina's op het internet te plaatsen, heb je een websiteprovider nodig die ASP.NET ondersteunt.

### Waarmee kan ik ASP.NET-pagina's schrijven?

ASP-pagina's zijn tekstbestanden. Je zou ze dus met Notepad/Kladblok kunnen maken. Er zijn echter grafische programma's die daar handiger voor zijn, bijvoorbeeld Web Matrix (alleen ASP.NET 1.x), Microsoft Visual Web Developer 2008 Express (gratis), Borland C# Builder, Adobe CS Dreamweaver en Expression Web van Microsoft. Binnen Visual Web Developer 2008 kan je kiezen om gebruik te maken van VB scripts of C++. Microsoft heeft ook het gratis Visual Basic 2008 Express (gratis) als aanvulling ter beschikking.

### ASP.NET-webserver

ASP.NET werkt op een webserver. Standaard is dit de Internet Information Server (IIS) van Microsoft, die werkt op Windows NT 4.0 Server of Windows 2000/2003 Server of Windows 2000/XP Professional. Je kunt ASP.NET niet installeren op Windows 95/98/Me. Opvallend is verder, dat ASP.NET binnen Windows ook als webserver kan werken, waardoor pagina's lokaal op de PC getest kunnen worden, zonder gebruik te maken van IIS. Voorheen kon dat alleen als de pagina's stonden in (lokale schijf, bv C):\inetpub\wwwroot\, maar met ASP3.NET is een willekeurige lokatie mogelijk. ASP3.NET maakt daarvoor een "poort open", bv http://localhost:3042, zodat een pagina in de browser kan worden bekeken via (bv) http://localhost:3042/default.aspx. Vanuit een programma zoals Microsoft Visual Web Developer 2008 Express hoeft men dan alleen op Ctrl-F5 te drukken om dit mogelijk te maken.
IIS wordt gratis bijgeleverd bij Windows XP (alleen Professional!), Windows 2000 en Windows 2003. Voor Windows NT is IIS te downloaden als onderdeel van het Windows NT 4.0 Option Pack. Dit is te vinden op de (gratis) Windows NT4.0 Option Pack cd, of is op te downloaden.
Waar je IIS kunt vinden en hoe je het installeert kun je hier lezen.
Hoewel ASP.NET een Microsoft-technologie is, werkt het niet alleen op het Windows-platform. Er zijn ASP.NET-implementaties zoals Open Source Mono Project (www.go-mono.com) en DotGNU Project (www.dotgnu.org), die werken met andere webservers en op andere platforms, zoals Unix en Linux. Hoewel deze implementaties qua opzet hetzelfde zijn, zijn er wel kleine verschillen. ASP.NET van Microsoft maakt namelijk gebruik van componenten die standaard deel uitmaken van Windows. Deze componenten bestaan niet altijd op andere platforms.

## Verschillen met ASP

ASP.NET is niet zomaar een nieuwe versie van ASP. ASP.NET is radicaal anders in aanpak. Zo lijkt het maken van applicaties met ASP.NET veel meer op het maken van bijvoorbeeld Visual Basic- of Delphi-applicaties. Dit heeft te maken met het feit dat ASP.NET onderdeel is van het .NET Framework, waarin alle soorten applicaties gebruik maken van dezelfde onderliggende infrastructuur en dus ongeveer op dezelfde wijze gemaakt kunnen worden.
Met ASP.NET kan je ook in de ene programmeertaal gebruik maken van objecten die geschreven zijn in een andere taal.
Er is bij de ontwikkeling van ASP.NET veel aandacht besteed aan het vereenvoudigen van dingen die vaak gedaan worden. Zo is bijvoorbeeld het weergeven van gegevens uit een database kinderspel geworden, de meeste 'code' daarvoor heeft ook veel weg van HTML, waardoor het ook voor HTML-developers betrekkelijk makkelijk te gebruiken is.
ASP.NET heeft veel nieuwe elementen:
* Webformulieren. Webformulieren maken het mogelijk formulieren te ontwerpen die eigenschappen, methodes, en events bevatten voor alle invoerelementen. Daardoor is het gemakkelijk om eender welk onderdeel te gebruiken in je code.
* Servercontrols. De servercontrols van ASP.NET vormen een belangrijk onderdeel van het nieuwe programmeermodel en komen ongeveer overeen met de HTML-elementen (plus enkele aanvullende besturingselementen). Server-controls worden uitgevoerd op de server, en kunnen als uitvoer HTML geven. In hoofdstuk 5 worden servercontrols besproken.
* User-controls. Je kunt zelf je eigen controls bouwen met ingebouwde functionaliteit. Deze kunnen dan op alle webformulieren gebruikt worden.
* Webservices. Deze bieden ontwikkelaars de mogelijkheid programmatische services via het internet aan andere ontwikkelaars beschikbaar te stellen.
* Caching. ASP.NET heeft een krachtige nieuwe caching-engine, waarmee ontwikkelaars de prestaties van hun toepassingen kunnen verbeteren door de belasting van de webservers en databaseservers te verminderen.
* Verbeteringen in de configuratie. ASP.NET slaat de configuratie-informatie voor webapplicaties op een andere manier op.
* Gecompileerde code. Code wordt alleen de eerste keer vertaald vanuit de programmeertaal. Daarna wordt ze in gecompileerde vorm bewaard en telkens opnieuw gebruikt, waardoor veel tijd uitgespaard wordt, en waardoor de prestaties opmerkelijk verbeteren.
* Ondersteuning voor meerdere programmeertalen. Naast VB wordt bijvoorbeeld ook C#, C++ en JScript ondersteund.
Vroeger gebruikte Microsoft nogal eens de onveilige "Frontpage Serverextensies". In ASP 3.5 is het mogelijk om ervoor te kiezen om die uit te zetten. Het grote voordeel daarvan is dat:
* men geen ondersteuning nodig heeft voor Frontpage Serverextensies bij de internet provider;
* men gewoon bestanden kan kopiëren van de lokale schijf naar de online lokatie bij de internet provider. Voorheen moest dat binnen Frontpage.
In plaats daarvan zit alle benodigde code gewoon in de betreffende bestanden.