ASPNL logo (1 kb)
Saturday, February 04, 2012




Microsoft MVP

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

.NET 2.0: Web applicaties met ASP.NET

Door Michiel van Otegem
24 juli 2008

Wie weinig kennis heeft van het maken van web applicaties kan met ASP.NET 2.0 snel iets tastbaars neerzetten. Voor veel voorkomende zaken is namelijk niet of nauwelijks code nodig. Het plaatsen van controls die het werk doen is in die gevallen al genoeg. Je kunt controls beschouwen als niets meer dan speciale HTML tags met wat bijzondere attributen (eigenschappen). Door de nodige attributen te voorzien van waardes, worden de controls van informatie voorzien van wat ze moeten doen en eventueel weergeven. Je kunt dus ASP.NET pagina’s maken met een HTML- of tekst-editor. Ook als er code aan te pas moet komen zou je daarmee uit de voeten kunnen, omdat code in de pagina zelf kan staan. Handiger is het echter om gebruik te maken van Visual Studio, de ontwikkelsuite van Microsoft. Daarin hoef je niet in de HTML te gaan zitten ploeteren, maar kun je de eigenschappen van controls via een handige interface instellen. Sommige controls bieden zelfs wizards waarmee je door het instelproces geloodst wordt. Verder biedt Visual Studio allerhande hints bij het schrijven van code. Visual Studio is dus echt een toegevoegde waarde bij het ontwikkelproces. Voor wie de professionele versie van Visual Studio te duur vindt, brengt Microsoft ook een aantal instapmodellen op de markt onder de noemer Visual Studio Express (zie http://msdn.microsoft.com/express). Deze instapmodellen worden waarschijnlijk gratis, en anders zeer mild geprijsd. Voor het maken van ASP.NET applicaties gebruik je Visual Web Developer Express met eventueel SQL Server Express als database voor je applicatie. Vanaf Beta 2 is dit de standaardkeuze, omdat SQL Server Express een aantal voordelen heeft ten opzichte van onder andere Microsoft Access, dat bij Beta 1 nog de standaard database was. Het is aan te raden om inderdaad van SQL Server Express gebruik te maken. De keuze daarvoor kun je maken tijdens het installatieproces. Visual Web Developer wordt geleverd met een speciale ingebouwde web server, zodat je geen web server hoeft te installeren om te kunnen ontwikkelen. Deze web server staat standaard uit, en wordt alleen gestart op het moment dat dit nodig is. Dit gebeurt elke keer op een andere TCP/IP poort en ook nog eens een in de hogere cijfers (bijvoorbeeld 19460), zodat het veiligheid risico beperkt is. Dit is verder beperkt doordat alleen browsers op de lokale machine toegang krijgen. Verbindingen vanaf andere computers worden onmiddellijk verbroken.

Pagina indeling

Een ASP.NET applicatie bevat net als een “gewone” web site pagina’s. Het verschil is dat HTML pagina’s statisch zijn, terwijl het resultaat van een ASP.NET pagina bijvoorbeeld af kan hangen van de gegevens in een database. Eén ASP.NET pagina kan meerdere HTML pagina’s vervangen, bijvoorbeeld in het geval van een nieuwspagina die aan de hand van de keuze van de gebruiker een bepaald artikel laat zien. In een conventionele HTML site heb je daar meerdere HTML pagina’s voor nodig. Een ASP.NET pagina bestaat uit HTML met daartussen ASP.NET controls. Verder kan een pagina code bevatten tussen tags. De code kan echter ook in een apart bestand opgeslagen worden, zodat de code en de opmaak gescheiden zijn. Optioneel kan een pagina beginnen met een aantal aanwijzingen, bijvoorbeeld welke programmeertaal in de pagina gebruikt wordt of in welk bestand de code staat indien er gebruik gemaakt wordt van de mogelijkheid om opmaak en code te scheiden. Afbeelding 1 laat de pagina indeling zien van een pagina met de code in de pagina zelf.


Afbeelding 1, Pagina indeling

In Visual Studio ben je over het algemeen niet zo direct met de pagina indeling bezig, tenzij je de pagina bekijkt in Source-weergave. Voor de meest voorkomende operaties zul je gebruik maken van de Design-weergave. In de Design-weergave zie je een visuele representatie van de pagina zoals die ongeveer wordt als je de pagina in een web browser opvraagt. Controls kun je in de weergave herkennen aan een groen pijltje in de linker bovenhoek. Nieuwe controls kun je vanuit de toolbox op de pagina slepen (dit kan ook in Source weergave). Wanneer je dat doet of als je een control selecteert kun je in het Properties venster eigenschappen van de control instellen. Die wijzigingen worden automatisch doorgevoerd naar de onderliggende HTML. Ook komt er bij de rechterbovenhoek een pijltje te staan voor een uiklap menu. Als je op het pijltje klikt komt een menu voor de betreffende control te voorschijn met daarin acties voor de betreffende control, zoals je kunt zien in Afbeelding 2.


Afbeelding 2, Acties menu bij een control

Uniforme opmaak

Een belangrijk aspect van een web applicatie is een uniforme opmaak. Je kunt daar het beste mee beginnen, in elk geval in grote lijnen, want het is lastig om dit achteraf voor een site te regelen. Een uniforme opmaak behelst een aantal zaken, waaronder de pagina indeling, lettertypes, en dezelfde knoppen en dergelijke voor dezelfde acties. Nu kun je een behoorlijk gedeelte hiervan verzorgen met Cascading Style Sheets (CSS), maar dat kan zeer ingewikkeld worden. ASP.NET 2.0 biedt een aantal complementaire mogelijkheden om een uniforme opmaak te verzorgen. Het eenvoudigst is het principe van Master Pages. Een Master Page is een sjabloon voor een pagina, bijvoorbeeld met het logo,navigatie en andere onderdelen die op alle pagina’s voor moeten komen. Binnen een Master Page definieer je één of meerdere content regio’s. Wanneer je een pagina baseert op een bepaalde Master Page, kun je in die pagina de content van die regio’s bepalen. Dit concept is niet nieuw, maar ASP.NET 2.0 geeft het wel nog de nodige extra’s. Zo kun je vanuit een pagina die gebaseerd is op een Master Page de betreffende Master Page benaderen en eventueel wijzigen. Verder kun je onder bepaalde voorwaarden tijdens het uitvoeren van de pagina een andere Master Page selecteren, en kun je een Master Page baseren op een andere Master Page. Zo kun je dus een algemene opmaak maken en vervolgens voor bepaalde onderdelen van een site een enigszins andere opmaak gebruiken, bijvoorbeeld een onderdeel van een web winkel met alleen producten van een bepaalde leverancier in andere kleurstelling. Wanneer je in Visual Studio een pagina baseert op een Master Page dan is in Design-weergave de Master Page te zien. Om te laten zien dat het om de Master Page gaat zijn content regio’s duidelijk gemarkeerd en is de Master Page niet te selecteren en wijzigen in de Design-weergave van de pagina. Je kunt dit zien in Afbeelding 3 waarin 1 content regio gedefinieerd is (Content1), die gemarkeerd is met een grijze balk. Alles daarboven is onderdeel van de Master Page en niet te wijzigen.


Afbeelding 3, Pagina gebaseerd op een Master Page in Visual Studio

Met alleen Master Pages ben je er nog niet als het gaat om een uniforme opmaak. Complementair hieraan is het principe van Themes. Eigenlijk is dat net zo als Themes voor bijvoorbeeld de Windows Desktop. Het bepaalt de gehele opmaak van alle elementen in een pagina op basis van een Theme-bestand, vergelijkbaar met een CSS-bestand. In CSS geef je echter aan hoe bepaalde HTML elementen onder bepaalde voorwaarden opgemaakt moeten worden. Een Theme-bestand daarentegen bevat control definities die min of meer gelijk zijn aan hoe die in de HTML van een pagina staat. De betreffende definitie wordt samengevoegd met de definitie die in de pagina staat. Door op de definitie in de pagina alleen functionele eigenschappen in te stellen wordt de opmaak definitie uit het Theme-bestand gebruikt. Dit maakt Themes veel makkelijker te gebruiken dan CSS, omdat vanuit het Theme-bestand heel duidelijk is hoe een control eruit komt te zien. Onder de kap wordt een control echter tot HTML en CSS geconverteerd (als de browser CSS ondersteunt), en kun je ook verwijzen naar een CSS class definitie. Je hebt dus wel de lusten maar niet de lasten van CSS. Binnen een Theme kun je meerdere definities voor dezelfde control plaatsen, zodat binnen een Theme bijvoorbeeld een OK-knop en een Annuleren-knop er anders uit kunnen zien. De verschillende definities zijn “skins” voor de control die onderscheiden worden door een SkinID. Op de pagina geef je aan welke skin een control moet gebruiken aan de hand van de SkinID. Naast opmaak kan een Theme ook afbeeldingen bevatten die gebruikt moeten worden voor bijvoorbeeld knoppen. Je bent dus niet beperkt tot pure opmaak via HTML en CSS, maar kunt per Theme ook aanpassingen doen van andere visuele elementen. Verder kun je net als Themes in Windows meerdere Themes definiëren en de gebruiker eventueel de gelegenheid geven een Theme te kiezen en dit opslaan in het gebruikersprofiel. Afbeeldingen 4 en 5 laten dezelfde pagina zien op basis van verschillende Themes.


Afbeelding 4, Pagina op basis van een Theme


Afbeelding 5, Pagina van afbeelding 5 met een andere Theme

Werken met een gegevensbron

Zo ongeveer de meest voorkomende reden om een technologie als ASP.NET, PHP, JSP, of iets dergelijks te gebruiken is om gegevens weer te geven uit een gegevensbron. Dit is meestal een database, maar het is ook mogelijk dat dit tekst of XML bestanden zijn. Helaas is dit ook meteen iets wat betrekkelijk ingewikkeld is, omdat je de gegevens uit de database of het bestand moet lezen, en deze vervolgens moet weergeven in een pagina. Wil je door de gegevens heen kunnen bladeren en eventueel gegevens willen wijzigen, dan vereist dit al snel behoorlijk wat programmeerwerk en dus programmeerkennis. Die kennis is dan vaak ook nog specifiek voor een bepaald type gegevensbron, zodat je bij een ander type bron weer helemaal bij het begin moet beginnen. ASP.NET 2.0 brengt hierin verandering. Je kunt uitsluitend op basis van controls gegevens weergeven, wijzigbaar maken, enzovoorts. Afhankelijk van welke opmaak je wilt is dit in slechts enkele minuten te regelen, zonder dat je nu echt geweldige programmeerkennis moet hebben. Dit komt omdat de communicatie met de gegevensbron gedaan wordt via een zogenaamde Data Source control. Omdat dit ook weer gewoon een control is, hoef je slechts de benodigde eigenschappen (bijvoorbeeld welke database je wilt gebruiken) in te stellen. Ook hier is er meestal een wizard je handje helpt. De controls waarmee gegevens weergeven moeten worden koppel je vervolgens aan de Data Source control waarvan je gegevens weer wilt geven. Afhankelijk van de controls die je hiervoor kiest en afhankelijk van wat mogelijk dan wel ingesteld is op de Data Source control kun je naast het weergeven van gegevens deze ook wijzigen, er doorheen bladeren, en sorteren. Nu zal de doorgewinterde ontwikkelaar z’n bedenkingen hebben bij deze aanpak, omdat het erop lijkt dat je de business logica overslaat en dus teruggrijpt naar een soort client-server model. Dit is echter maar schijn, omdat een Data Source control gebaseerd is op afspraken over hoe gegevens aangeleverd moeten worden en hoe deze te wijzigen zijn. Elke control die zich aan deze afspraken houdt kan fungeren als een Data Source voor andere controls. Dit kan dus ook een business logica object zijn. Je kunt zelf Data Source controls maken, maar in veel gevallen is de Object Data Source control afdoende. Met die control kun je ieder object dat bepaalde functies implementeert als gegevensbron laten dienen. In Afbeelding 6 zie je hoe gemakkelijk het is om gegevens in tabelvorm weer te geven en deze pagineerbaar, soorteerbaar en wijzigbaar te maken. In Visual Studio hoef je alleen aan te vinken wat je wilt… een kind kan de was doen.


Afbeelding 6, Gegevens weergeven in tabelvorm

Beveiliging

Het kunnen wijzigen van gegevens is in negen van de tien gevallen iets dat alleen bepaalde mensen moeten kunnen. Je zult die pagina’s dus moeten beveiligen. Dit komt zo vaak voor dat ASP.NET specifieke functionaliteit bevat voor het beveiligen van pagina’s, waarbij de gebruiker zonodig naar een login-pagina wordt verwezen. In ASP.NET 2.0 is dit mechanisme verder uitgebreid en zijn er meerdere controls die hierop van toepassing zijn. Het meest voor de hand liggend is een login-control waarin naam en wachtwoord opgegeven moeten worden. Deze werkt zonder dat je daar code bij hoeft te schrijven om te controleren of de gebruiker wel toegang heeft, aangezien in ASP.NET 2.0 die database automatisch voorhanden is. Standaard werkt dit met SQL Server, maar dit is configureerbaar zonder dat de controls daar wat van merken. Ook hier is dus gekozen voor een aanpak die de functionaliteit op control niveau scheidt van de onderliggende functionaliteit dan wel de gegevensbron. Dit patroon, dat wel het Provider-patroon genoemd wordt, komt in ASP.NET 2.0 regelmatig terug. Andere controls die handig zijn bij beveiliging van web applicaties zijn controls voor het aanmaken van een gebruikersaccount, het opvragen van een vergeten wachtwoord, en verschillende weergaven afhankelijk van of de gebruiker ingelogd is of niet. Deze controls zijn hun specifieke functies heel duidelijk en dus makkelijk te begrijpen. Voor dit soort essentiële functionaliteit is dat ook belangrijk, want je wilt niet dat door een klein foutje iemand toegang krijgt tot pagina’s die hij/zij niet mag zien. Wil je de beveiliging gaan instellen, of alvast gebruikers of rollen aanmaken, dan kan dit via de Web Site Administration Tool, waarvan je in Afbeelding 7 de Security (beveiliging) tab ziet. Het instellen van de beveiliging is ook hier weer met een wizard te doen, zodat je weinig risico loopt verkeerde instellingen te doen.


Afbeelding 7, Web Site Administration Tool

Topje van de ijsberg

Dit artikel geeft slechts een overzicht van een aantal belangrijke nieuwe mogelijkheden van ASP.NET 2.0. Er is echter nog vele malen meer, en in allerlei verschillende delen van ASP.NET. De beste manier om te zien wat er allemaal kan is door met Visual StudioExpress aan de slag te gaan. In de help daarvan staan How To’s die je stapsgewijs kennis laten maken met bepaalde mogelijkheden. Bovendien bevat de huidige Beta versie een Template voor een persoonlijke site met onder andere een foto-album. Dat sjabloon, eigenlijk een kant en klare site, geeft inzicht in bepaalde mogelijkheden en hoe je die voor elkaar krijgt. De uiteindelijke versie zal mogelijk meer Templates bevatten, en er zullen Templates te downloaden zijn van Microsoft en derden. Hiermee kun je dan snel een site maken met leuke functionaliteit.

Dit artikel is eerder verschenen in NetOpus, maart/april 2005.

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