Vous êtes sur la page 1sur 49

03/03/2003

.Net et les pages dynamiques ASP.Net


Michel RIVEILL riveill@unice.fr - http://www.essi.fr/~riveill Laboratoire I3S Ecole dIngnieur en Sciences Informatiques (ESSI)

Plan
n IIS n Applications Web n Configuration n Trace n Session n Cache n Dploiement n Disponibilit n Scurit n Cot serveur n Cot client

n Gestion des erreurs n Mise en uvre des

contrles n Dvelopper des formulaires

03/03/2003

03/03/2003

IIS
n Internet Information Server n Supporte ASP.NET n Sexcute dans le processus inetinfo.exe
n n

comme FTP, NNTP, SMTP Avec lesquels il partage des ressources c:\inetpub\wwwroot

Localisation par dfaut


n

n Rpertoire virtuel n Fourni un niveau dindirection entre lURL et la localisation des fichiers n Par exemple :
n

URL = http://myServer/myApplication/foo.asp Fichier = d:\myFolder\myAppFolder\foo.asp


3

03/03/2003

Plan
n IIS n Applications Web n Configuration n Trace n Session n Cache n Dploiement n Disponibilit n Scurit n Cot serveur n Cot client

n Gestion des erreurs n Mise en uvre des

contrles n Dvelopper des formulaires

03/03/2003

03/03/2003

Applications Web
n Quesaco ? n Toutes les ressources (fichiers, pages, handlers, modules, code excutable, etc.) associes un rpertoire et ses descendants
n n n

Fichier de configuration Donnes partages (variables de lapplication) global.asax Une session est constitue dun ensemble de pages web accde par un mme utilisateur, dans la mme unit de temps Utilisation de donnes partages (variables de session)
5

Etendre les sessions utilisateurs


n

03/03/2003

Applications Web
global.asax
n Localis la racine de lapplication n Peut dfinir et initialiser des variables de

session et applicatives
n n

Objet prcis cr par une classe, COM ProgID ou COM ClassID Attention : lutilisation dobjets partags peut tre une cause dinter blocage ou derreur (gestion de la concurrence)

<object id="items" runat="server scope=application class="System.Collections.ArrayList" />


03/03/2003 6

03/03/2003

Applications Web
global.asax
n Peut contenir du code utilisateur qui capture

les vnements de la session ou de lapplication (comme ASP)


n n

Application_OnStart, Application_OnEnd Session_OnStart, Session_OnEnd

void Application_OnStart() { Application["startTime"]=DateTime.Now.ToString(); } void Session_OnStart() { Session["startTime"]=DateTime.Now.ToString(); }


03/03/2003 7

Applications Web
global.asax
n Peut utiliser du code prsent dans les pages n Peut contenir des directives applicatives
n n n n n

<%@ Application Description=This is my app %> <%@ Application Inherits=MyBaseClass %> <%@ Application Src=Global.cs %>
n

Utilis par Visual Studio.NET

<%@ Import Namespace=System.Collections %> <%@ Assembly Name=MyAssembly.dll %>

03/03/2003

03/03/2003

Plan
n IIS n Applications Web n Configuration n Trace n Session n Cache n Dploiement n Disponibilit n Scurit n Cot serveur n Cot client

n Gestion des erreurs n Mise en uvre des

contrles n Dvelopper des formulaires

03/03/2003

Configuration
n But
n

Fournir une configuration extensible pour les administrateurs et les dveloppeurs n Structuration hirarchique de lapplication n Solution n Sauvegarder les donnes de configuration dans des fichiers XML n Format lisible aussi bien par un programmeur que par une machine n Spcifi dans les diffrentes sections de configuration, e.g. n Security, SessionState, Compilation, CustomErrors, ProcessModel, HTTPHandlers , Globalization, AppSettings, WebServices, WebControls, etc. n Les information de configuration sont sauvegardes dans

web.config

n Cest un fichier (pas une DLL, Registry ou une mtabase) <!-- web.config peut avoir des commentaires --> n Comme tous fichiers XML

03/03/2003

10

03/03/2003

Configuration
Configuration Hirarchy
n Les fichiers de configuration sont sauvegard dans les rpertoires

applicatifs n Le systme dtecte automatiquement les changement de configuration n Architecture hirarchique n Sapplique au rpertoire courant et ses descendant Root Dir Sub Dir1
n Fichier de configuration racine dune station
n n

web.config

Fourni un ensemble de configuration par dfaut Est hrit par toutes les applications web de la station

Sub Dir2

03/03/2003

C:\WINNT\Microsoft.NET\Framework\v1.0.2914\ config\machine.config

11

Configuration
web.config Sample
<configuration> <configsections> <add names=httpmodules type =System.Web.Config.HttpModulesConfigHandler/> <add names=sessionState type=.../> </configsections> <httpModules> <!--- http module subelements go here --> </httpModules> <sessionState> <!--- sessionstate subelements go here --> </sessionState> </configuration>
03/03/2003 12

03/03/2003

Configuration
Dfinition par lutilisateurs
n Crer le fichier web.config dans le rpertoire adquat

<configuration> <appSettings> <add key=CxnString value=localhost;uid=sa;pwd=;Database=foo/> </appSettings> </configuration>


n Rcuprer les informations lexcution

string cxnStr = ConfigurationSettings .AppSettings["CxnString"];


03/03/2003 13

Configuration
Traitants de configuration spcifiques
n tendre lensemble des traitants de

configuration pour obtenir celle requise par une application particulire n Implmenter linterface:
System.Web.Configuration.IConfigurationSection Handler

n Ajouter le nouveau traitant lun des fichiers

de configuration
n n

web.config machine.config
14

03/03/2003

03/03/2003

Agenda
n IIS n Applications Web n Configuration n Trace n Session n Cache n Dploiement n Disponibilit n Scurit n Cot serveur n Cot client

n Gestion des erreurs n Mise en uvre des

contrles n Dvelopper des formulaires

03/03/2003

15

Trace
n ASP.NET supporte le mode trace

La mthode naturelle pour suivre la mise au point n Plus de trace en dur : Response.Write() n Les instructions de trace peuvent tre active ou inhibe (plus besoin de modifier le code) n Solution lgante pour collecter tous les dtail dune requte n Arbre de contrle du serveur n Variables du serveur, en-tte, cookies
n

Chanes de paramtres : formulaire / requte Le mcanisme de traces donne de trs nombreuses information sur la page demande n Peut tre activ par page ou au niveau applicatif
n n

03/03/2003

16

03/03/2003

Trace
Mthodes et proprits
n Mthodes n Trace.Write : crit la catgorie et le texte de la trace n Trace.Warn : crit la catgorie et le texte de la trace en rouge n Proprits n Trace.IsEnabled: vrai si les traces sont actives pour lapplication ou pour cette page n Trace.Mode: SortByTime, SortByCategory n Implment dans la classe System.Web.TraceContext

03/03/2003

17

Trace
Trace au niveau page
n Pour activer les traces dans une page 1. Ajouter une directive de trace en dbut de page
n

<%@ Page Trace=True %>


Trace.Write(MyApp, Button Clicked); Trace.Write(MyApp, Value: + value);

2.

Ajouter les traces dans la corps de la page


n n

3.

Accder la page depuis un navigateur

03/03/2003

18

03/03/2003

Trace
Trace au niveau applicatif
n Pour activer les traces sur de multiples

pages
1. Crer

le fichier web.config la racine de lapplication

<configuration> <trace enabled=true requestlimit=10/> </configuration>

une ou plusieurs pages de lapplication 3. Accder aux traces partir de l URL associe lapplication http://localhost/MyApp/Trace.axd
03/03/2003 19

2. Lire

Trace
Dmonstration sur les traces
n Dmonstration : Trace1.aspx n Visualiser les traces obtenues

03/03/2003

20

10

03/03/2003

Trace
Tracer depuis un composant
n Pour ajouter des traces un composant n Importer le namespace web
using System.Web;
n

Activer les traces dans le constructeur de lobjet (optionel):


HttpContext.Current.Trace.IsEnabled = true;

crire une trace


HttpContext.Current.Trace.Write(categor y,msg);

03/03/2003

21

Agenda
n IIS n Applications Web n Configuration n Trace n Session n Cache n Dploiement n Disponibilit n Scurit n Cot serveur n Cot client

n Gestion des erreurs n Mise en uvre des

contrles n Dvelopper des formulaires

03/03/2003

22

11

03/03/2003

Gestion de session
Le problme
n HTTP

Quand et ou sauvegarder les donnes ? Comment transmettre les donnes dune page dans une autre ? n Comment contourner le protocole HTPP qui est sans tat ? n Three-Tier Architecture
n n

Client

Sauvegarde les donnes Web Servers dans une ou plusieurs bases

Donnes peuvent tre permanentes par utilisateur, par-session ou par-application


03/03/2003

Database

23

Gestion de session
Client
n Gestion de session ct client, un scnario : n Le client requte une page initiale n Le serveur gnre une rponse HTTP/HTML quil renvoie au client
n

Cette rponse inclue un description de la session (tat)

Lutilisateur regarde la rponse et effectue une slection, provoquant une autre requte auprs du serveur
n

Cette seconde requte contient la description de la session envoye dans la rponse la premire requte

Le serveur (le mme ou un autre) reoit la requte et la traite


24

03/03/2003

12

03/03/2003

Gestion de session
Client
n URL dans un hyperlien (<a>) n Contient la requte n Visible aux utilisateurs
n

Bonne ou mauvaise chose

n lment cach dans un formulaire n comme __VIEWSTATE n Cookies n Limit 4K n Peut tre supprim ou interdit par les utilisateurs
03/03/2003 25

Gestion de session
Serveur Web (Middle-Tier)
n Variables dapplication n Partages par toutes les sessions, les utilisateurs n Variables session n Ncessite de passer lidentifiant de session au client n Gr par la base de donnes ou par ASP.NET State Service n Cache n Simalaire aux variables dapplication n Peut tre mis jour priodiquement
03/03/2003 26

13

03/03/2003

Gestion de session
Base de donnes
n Niveau applicatif n Fait partie intgrante de la conception de la base de donnes n Niveau session n Gestion de ltat de la session construite sur mesure dans la base de donnes n ASP.NET supporte la gestion de session au niveau de la base de donnes

03/03/2003

27

Gestion de session
Dans ASP.NET
n ASP.NET supporte n Supporte diffrent mode de gestion de session
n n

Par utilisateur Par application

n Les donnes lies la gestion des sessions

peuvent tre sauvegardes dans le serveur Web (middle-tier)

03/03/2003

28

14

03/03/2003

Gestion de session
Variables dapplication
n Les variables de lapplication sont sauvegardes

dans une instance de HttpApplicationState n Accd depuis la proprit Page.Application n Lobjet Application peut tre verrouill
n n

Gestion des accs concurrent Ncessaire uniquement en cas de modification

n A utiliser avec prudence n Prfrer les accs en lecture n Initialiser lensemble dans global.asa n viter de srialiser vos pages

03/03/2003

29

Gestion des sessions


n Session n Contexte communiqu par un utilisateur un serveur par lintermdiaire de multiple requte HTTP n Ncessaire pour construire une application ASP.NET n HTTP est un protocole sans tat, sans session n ASP.NET introduit le concept de session n Identificateur de session : chane de 120 bit ASCII n vnement de session : Session_OnStart, Session_OnEnd n Variables de session : donnes partages par plusieurs requtes n ASP.NET amliore les sessions ASP
03/03/2003 30

15

03/03/2003

Gestion des sessions


Identificateur de session
n Par dfaut, les SessionId sont sauvegard dans un

cookie (cot client) n Il est aussi possible de sauvegarder le SessionId dans une URL
n

Nexiste pas dans ASP

n Aucune modification de lapplication nest ncessaire n Tous les liens relatifs continuent de fonctionner
<configuration> <sessionState cookieless=true/> </configuration>

03/03/2003

31

Gestion de session
Variables de session
n ASP sauvegarde les informations lies la session dans le

processus IIS Si le serveur crash on perd la session n Une session est propre un serveur Web n ASP.NET sauvegarde les informations de session : n Dans le processus IIS n Dans un autre processus : ASP State NT service n Dans une base de donnes
n

<sessionstate inproc="false" server=AnotherServer" port="42424" /> <sessionstate inproc="false" server=AnotherServer" port="42424" usesqlserver=true />
03/03/2003 32

16

03/03/2003

Gestion de session
Variables de session
n Les objets vivants ne sont sauvegards les objet

session
n

ASP.NET srialise les objets entre les requtes

n ASP.NET fournit la possibilit n De rcuprer ltat de lapplication aprs un crash n De tolrer la panne, le redmarrage sur serveur IIS n Dexcuter une application sur plusieurs stations (ferme de stations Web Farm) n Dexcuter une application sur plusieurs processeurs (Web Garden)

03/03/2003

33

Gestion de session
Variables dapplication et de session
n Demonstration : ApplicationAndSession.aspx

03/03/2003

34

17

03/03/2003

Gestion de session
Transfert du contrle entre les pages
n Lien sur une page n Retour dun post n Response.Redirect n Redirection dune requte HTTP n Demander au navigateur daller une autre URL n Server.Transfer n Idem redirection mais sur un seul serveur n Server.Execute n Excuter une page depuis une autre et lui rendre le contrle n Les pages sont excutes sur le mme serveur

03/03/2003

35

Plan
n IIS n Applications Web n Configuration n Trace n Session n Cache n Dploiement n Disponibilit n Scurit n Cot serveur n Cot client

n Gestion des erreurs n Mise en uvre des

contrles n Dvelopper des formulaires

03/03/2003

36

18

03/03/2003

Cache
n De nombreux sites Web gnrent rgulirement les

mmes pages
n

Par exemple
n

Un catalogue de produit peut-tre mis jour chaque nuit Et accd en lecture des milliers de fois chaque jour

n Cache du cot serveur augmente notablement les

performances et diminue le temps de rponse (facteur dchelle) n ASP.NET fournit le support pour
n n
03/03/2003

Cacher les pages mettre Cacher les donnes


37

Cache
de page out
n La page Web est compltement cache (HTML) n Il faut indiquer la dure de vie de la page dans le

cache (en secondes)


<%@ OutputCache Duration="60 VaryByParam="none" %>

n Il est possible de cacher plusieurs version dun mme

page
n n

Paramtres GET/POST ; utilisation de VaryByParam En-tte HTTP ; utilisation de VaryByHeader


n

E.g. Accept-Language

En fonction du type de navigateur ou du client ; utilisation de VaryByCustom


38

03/03/2003

19

03/03/2003

Cache
Partiel dune page out
n Il est possible de cacher n Uniquement une partie de page en y plaant un contrle utilisateur n De multiples versions dun contrle utilisateur en utilisant la proprit VaryByControl

03/03/2003

39

Cache
dans le navigateur
n Ne pas confondre cache cot serveur et les

mcanismes de cache cot client


n n

Proxy Cache du navigateur

n utiliser Response.Cache pour spcifier la

politique de cache HTTP


n

Contient un objet HttpCachePolicy

03/03/2003

40

20

03/03/2003

Cache
de donnes
n Cache de donnes est similaire aux variables dapplications n Peut cacher des objets, des bouts de document HTML, etc. n Utilisation :
n n

Recherche dune donne Si null alors cration de la donne et insertion dans le cache

DataView Source = (DataView)Cache["MyData"]; if (Source == null) { Source = new DataView(ds.Tables["Authors"]); Cache["MyData"] = Source; // Save in cache }
n Lobjet cach est sauvegard dans la page cest une instance

de System.Web.Caching.Cache
03/03/2003 41

Cache
de donnes
n Le cache peut tre nettoy pour pouvoir faire de la

place aux nouveaux entrants n Il est possible dexprimer une date dexpiration
n

Temps absolu (e.g. minuit), relatif (dans 1 heure)

n Les donnes caches peuvent dpendre dun fichier

ou dune autre donne du cache


Cache.Insert("MyData", Source, null, // Expire in 1 hour DateTime.Now.AddHours(1), TimeSpan.Zero); Cache.Insert("MyData", Source, // Dependent on file new CacheDependency(Server.MapPath("authors.xml")));

03/03/2003

42

21

03/03/2003

Cache
de donnes
n Il est frquent que quelques pages soit prsente de

multiples exemplaires dans le cache


n

Gnralement lorsque deux clients en demande laccs simultanment Peut tre gnant si le cot de la mise en copie est prohibitif, ou sil y a dautres effets secondaires

n Sans effet significatif la plupart du temps


n

n Si cela arrive, il y a deux solutions n Contrler la population du cache avec Application_OnStart n Synchroniser les accs au cache

03/03/2003

43

Cache
de donnes
private static String cacheSynchronize = "myKey"; DataView Source = (DataView)Cache["MyDataSet"]; if (Source == null) { lock (cacheSynchronize) { Source = (DataView)Cache["MyDataSet"]; if (Source == null) { // Have to test again // Open database ... Source = new DataView(ds.Tables["Authors"]); // Save in cache Cache["MyDataSet"] = Source; } } }
03/03/2003 44

22

03/03/2003

Cache
de donnes
n ASP.NET page state maintenance is great,

but __VIEWSTATE can get quite large n Why store constant data in __VIEWSTATE?
n

E.g. dropdowns listing countries, states, days of the week, months, product categories, SKUs, etc.

n Instead, set EnableViewState=false,

cache that data on the server, and populate the control from the cache in Page_Load n Can cache data or even HTML
n
03/03/2003

Use Control.Render() to obtain a controls HTML


45

Plan
n IIS n Applications Web n Configuration n Trace n Session n Cache n Dploiement n Disponibilit n Scurit n Cot serveur n Cot client

n Gestion des erreurs n Mise en uvre des

contrles n Dvelopper des formulaires

03/03/2003

46

23

03/03/2003

Gestion des erreurs


n .NET CLR fourni une architecture unique pour la

gestion des exceptions


n n

Erreur lexcution sont propages sous la forme dexception VB a t tentu et supporte try/catch/finally

n ASP.NET permet la dfinition de traitant

dexception
n

Redirection automatique des utilisateurs vers la page quand des erreurs non rcupres surviennent Dfini des messages derreurs clairs en lien avec les applications
47

03/03/2003

Gestion des erreurs


Pages spcifiques
n Un utilisateur peut spcifier des pages

derreur dans web.config


<configuration> <customerrors mode=remoteonly defaultredirect=error.htm> <error statuscode=404 redirect=adminmessage.htm/> <error statuscode=403 redirect=noaccessallowed.htm/> </customerrors> </configuration>

03/03/2003

48

24

03/03/2003

Gestion des erreurs


Error Events
n Surcharger la Page.HandleError pour rcuprer

toutes les erreurs non traites dans cette page n Un vnement global applicatif est lev si un exception leve nest pas traite
n n n

Accs la Request courante Accs lobjet Exception Regarder lvnement HttpApplication.Error

n Gestion des erreurs par dfaut n Mise en log des erreurs (utilisation de la classe EventLog) n Envoir dun email aux administrateurs (utilisation de la classe SmtpMail)
03/03/2003 49

Gestion des erreurs


Gnrer des logs
<%@ Import Namespace="System.Diagnostics" %> <%@ Assembly name="System.Diagnostics" %> <script language="C#" runat=server> public void Application_Error(object Sender, EventArgs E) { string LogName = "MyCustomAppLog"; string Message = "Url " + Request.Path + " Error: + this.Error.ToString() // Create event log if it doesnt exist if (! EventLog.SourceExists(LogName)) { EventLog.CreateEventSource(LogName, LogName); } // Fire off to event log EventLog Log = new EventLog(); Log.Source = LogName; Log.WriteEntry(Message, EventLogEntryType.Error); } </script>

03/03/2003

50

25

03/03/2003

Gestion des erreurs


Envoyer un mail par SMTP
<%@ Import Namespace="System.Web.Util" %> <%@ Assembly name="System.Diagnostics" %> <script language="C#" runat=server> public void Application_Error(object Sender, EventArgs E) { MailMessage MyMessage = new MailMessage(); MyMessage.To = "scottgu@microsoft.com"; MyMessage.From = "MyAppServer"; MyMessage.Subject = "Unhandled Error!!!"; MyMessage.BodyFormat = MailFormat.Html; MyMessage.Body = "<html><body><h1>" + Request.Path + "</h1>" + Me.Error.ToString() + "</body></html>"; SmtpMail.Send(MyMessage); } </script>
03/03/2003 51

Agenda
n IIS n Applications Web n Configuration n Trace n Session n Cache n Dploiement n Disponibilit n Scurit n Cot serveur n Cot client

n Gestion des erreurs n Mise en uvre des

contrles n Dvelopper des formulaires

03/03/2003

52

26

03/03/2003

Dploiement
n Par copie des fichiers (XCOPY)
n n n

Placer dans le rpertoire .\bin Pas de dploiement de DLL, ni de mise jour de registres
n

n Plus de DLL Sauf si vous utilisez COM ou dautres DLLs Les DLLs sont partages par copies dans des rpertoires cachs Les fichiers .aspx sont automatiquement compils
Faux pour codebehind

Pas de DLLs verrouille


n n

n Mise jour du code chaud (.aspx et assemblages) n Pendant le fonctionnement du serveur n Il nest pas ncessaire stopper/redmarrer n Les applications sont isoles n Chaque application sa propre version des composants n Dsinstaller = delete /s *.*
03/03/2003 53

Agenda
n IIS n Applications Web n Configuration n Trace n Session n Cache n Dploiement n Disponibilit n Scurit n Cot serveur n Cot client

n Gestion des erreurs n Mise en uvre des

contrles n Dvelopper des formulaires

03/03/2003

54

27

03/03/2003

Disponibilit
n ASP.NET handles failures in user and

system code n Detects and recovers from problems


n

Access violations, memory leaks, deadlocks

n Supports pre-emptive cycling of apps n Time and request-based settings

03/03/2003

55

Disponibilit
Modle de recouvrement
n ASP.NET sexcute dans un autre processus n aspnet_ewp.exe n Protge les IIS des pannes dASP n Il est aussi possible de configurer les

processus ASP.NET pour survivre


n

Aux fuites de mmoire


<processmodel memorylimit=75 />

Interblocage
<processmodel requestqueuelimit=500 />

03/03/2003

56

28

03/03/2003

Availability
Preemptive Recycling
n ASP.NET optionally supports pre-emptive

cycling of worker processes


n

Eliminates need for admins to kick the server once a week

n Can be configured two ways: n Time based (reset every n minutes)


<processmodel timeout=60 /> n

Request based (reset every n requests)


<processmodel requestlimit=10000 />

03/03/2003

57

Agenda
n IIS n Applications Web n Configuration n Trace n Session n Cache n Dploiement n Disponibilit n Scurit n Cot serveur n Cot client

n Gestion des erreurs n Mise en uvre des

contrles n Dvelopper des formulaires

03/03/2003

58

29

03/03/2003

Scurit
n Pourquoi scuriser n Protger les accs certaines parties dun site n Protger les accs en criture certaines donnes n Configuration de la scurit n Tag <security> dans le fichier web.config n Authentification, Autorisation, Usurpation didentit n Accs scuris au code n Est-ce que le code est bien celui prvu ? n Protger le serveur contre du code malveillant

03/03/2003

59

Scurit
Authentification
n Qui tes vous ? n Le serveur doit authentifier les client n Les clients doivent authentifier le serveur n Utilisation de Kerberos n Besoin dun annuaire pour sauvegarder les comptes

clients
n

NT: Security Accounts Manager


n

OK pour une utilisation sur un Intranet (40,000 comptes) OK pour une utilisation sur un Intranet ou sur Internet
60

Windows 2000: Active Directory


n

03/03/2003

30

03/03/2003

Scurit
Authentification
Authentification IIS n Compte Anonyme
n

Le mme W2K/NT compte pour tous les visiteurs Support standard Password envoy en texte clair NTLM Kerberos (Windows 2000) Associs un compte W2K/NT

Authentification de base
n n

Authentification intgre Windows


n n

Certificats Client
n

Authentification ASP.NET n Fournis le module daccs Passport


n

Utilisation du profil API Facile utiliser, utilisation de cookie Active un cran de login Supporte les mcanismes de certifications avec base de donnes, exchange, etc.

Personnalisable par des formulaires


n n n

03/03/2003

61

Scurit
Autorisation
n tape 1 (authentification) n Qui tes vous ? n Etape 2 (autorisation)

Quavez-vous le droit de faire n W2K/NT DACLs (Discretionary Access-Control List)


n
n

Permissions et refus en lecture/criture/excution/etc. accords un utilisateur ou un groupe dutilisateurs

n IIS fournit aussi un contrle n Read, write, run script, run executable, directory browsing, script access for virtual directories, directories and files
03/03/2003 62

31

03/03/2003

Scurit
ASP.NET Autorisation
n Dfinition des autorisations par utilisateur ou par rle n Les rles dfinissent des groupes logiques n Exemple: Utilisateur, Administrateur, Invit, etc. n Permet de sparer les aspects dveloppement et administration n Les dveloppeurs peuvent inclure dans le code les

tapes ou les droits doivent tre vrifis


n

if (User.IsInRole(Admin) { }

n IIS authentifie lutilisateur n Le ticket est pass lapplication ASP.NET n ASP.NET qui fonctionne avec les droits de cet utilisateur n Les accs sont permis selon les rgles de NTFS
03/03/2003 63

Agenda
n IIS n Applications Web n Configuration n Trace n Session n Cache n Dploiement n Disponibilit n Scurit n Cot serveur HTTP n Cot client

n Gestion des erreurs n Mise en uvre des

contrles n Dvelopper des formulaires

03/03/2003

64

32

03/03/2003

HTTP Runtime
n Modle dexcution de bas niveau n Remplacement logique dISAPI n Construit pour rsister aux pannes n Le code managed sexcute dans un processus unmanage n Chaque requte est traite par un fil dexcution indpendant n Multi-threaded n Fournis des possibilits pour remplacer/tendre le cur du serveur n limine la boite noire magique dASP/IIS n Supporte dautres abstraction de programmation n HttpModules permet dintercepter les requtes n Similaire au filtre ISAPI n Utilis pour lauthentification, la gestion de ltat dune session, le cache en sortie n HttpHandlers permet de construire des requtes de bas niveau n Implment par des objets IHttpHandler n Activ pour traiter les requtes n Pages et services construits laide de IHttpHandler n Ajout de modules et de traitant dans web.config
03/03/2003 65

HTTP Runtime
n ASP.NET Web Forms et les services Web

Services sont construit en utilisant le runtime ASP.NET HTTP


n n

Pas dastuces caches Il est possible de construire la mme chose

03/03/2003

66

33

03/03/2003

HTTP Runtime
n HTTP module pipeline n Managed classes n Chaque module implmente une interface spcifique
n

Par exemple : gestion des tats, scurit

Chaque requte est traite par le mme pipeline

n Traitant de requte (handler) n Managed classes n Plusieurs traitant de requte pour une seule application
n

Mais une seule par URL

03/03/2003

67

HTTP Runtime
HTTP Handler
Application

HTTP Handler

HTTP Handler

HTTP Module HTTP Module HTTP Module ASP+ HTTP Runtime Host (IIS 5, IIS 4, IE)
03/03/2003

Http Context

Managed code Native code


68

34

03/03/2003

HTTP Runtime
HTTPContext
n HttpContext est un objet qui encapsule

tout les information lies une requte Http


n

System.Web.HttpContext

n HttpHandler et HttpModules accde aux

objets HttpContext
n HttpHandlers et HttpModules peuvent

ajouter des objets HttpContext

03/03/2003

69

HTTP Runtime
System.Web.HTTPContext
public class HttpContext { public HttpRequest public HttpResponse public HttpServerUtility public HttpApplication public HttpSession public IPrincipal public Cache public IDictionary public IHttpHandler public Exception public DateTime public Object }
03/03/2003 70

Request Response Server Application Session User Cache Items Handler Error TimeStamp

{ { { { { { { {

get; get; get; get; get; get; get; get;

} } } } } } } }

{ get; } { get; } { get; }

GetConfig(String name);

35

03/03/2003

HTTP Runtime
HTTPRequest/HTTPResponse
n Les objets HttpRequest/HttpResponse

contiennent les requtes/rponses

03/03/2003

71

HTTP Runtime
HttpHandlers
n HttpHandlers permet de traiter des URLs

ou des groupes dURL avec la mme extension au sein de la mme application


n

Analogue aux extensions ISAPI

n Quelques exemple dHTTPHandler n ASP.NET Page Handler n ASP.NET Service Handler n Server-Side XSL Transformer n Image Generator Service
03/03/2003 72

36

03/03/2003

HTTP Runtime
HttpHandlers
n Construit comme des classes qui

implmentent linterface System.Web.IHttpHandler


public interface IHttpHandler { public void ProcessRequest(HttpContext context); public bool IsReusable(); }

n Mthode ProcessRequest() Method n Mthode qui excute chaque requte n Mthode IsReusable() n Indique si le pooling est activ
03/03/2003 73

HTTP Runtime
HttpHandler Registration
Compile and deploy .NET Library DLL within bin dir under application vroot 2. Register HttpHandler in web.config
1.
<configuration> <httphandlers> <add verb=* path=foo.bar type=assembly#class/> </httphandlers> </configuration>

3.

Ensure that HttpHandler file extension is registered within IIS to xspisapi.dll


n

Hint: Copy/Paste .aspx registration entry

03/03/2003

74

37

03/03/2003

HTTP Runtime
HttpModules
n HttpModules enable developers to

intercept, participate or modify each individual request into an application n HttpModule Examples:
n n n n

Output Cache Module Session State Module Personalization State Module Custom Security Module

03/03/2003

75

HTTP Runtime
HttpModules
n Built as classes that implement the

System.Web.IHttpModule interface
public interface IHttpModule { public String ModuleName { get; } public void Init(HttpApplication application); public void Dispose(); }

03/03/2003

76

38

03/03/2003

HTTP Runtime
HttpModules
n HttpModules can use Init() method to sync

any HttpApplication
n n

Global Application Events Per Request Application Events

n Global Application Events n Application_Start n Application_End n Application_Error

03/03/2003

77

HTTP Runtime
Per Request Application Events
n Per Request Events (in order):
n n n n n n n n n n

Application_BeginRequest Application_AuthenticateRequest Application_AuthorizeRequest Application_ResolveRequestCache Application_AquireRequestState Application_PreRequestHandlerExecute Application_PostRequestHandlerExecute Application_ReleaseRequestState Application_UpdateRequestCache Application_EndRequest Application_PreSendRequestHeaders Application_PreSendRequestContent
78

n Per Request Transmission Events:


n n

03/03/2003

39

03/03/2003

HTTP Runtime
HTTP Module Registration
1. Compile and deploy .Net Library DLL within

bin dir under app vroot 2. Register HttpModule in web.config


<configuration> <httpmodules> <add type=assembly#classname/> </httpmodules> </configuration>

03/03/2003

79

Agenda
n IIS n Applications Web n Configuration n Trace n Session n Cache n Dploiement n Disponibilit n Scurit n Cot serveur n Cot client

n Gestion des erreurs n Mise en uvre des

contrles n Dvelopper des formulaires

03/03/2003

80

40

03/03/2003

Targeting Uplevel Clients


n But n Pages render more richly to uplevel clients, but work well in downlevel clients too n Page developers can identify target client
<%@ Page ClientTarget="Uplevel" %> <%@ Page ClientTarget="Downlevel" %> <%@ Page ClientTarget="Auto" %>

03/03/2003

81

Targeting Uplevel Clients


Request.Browser
n Provides more granular control of what is

rendered to a given client n Exposes specific client capabilities

if (Request.Browser.Frames == True) { // Use frames }

03/03/2003

82

41

03/03/2003

Agenda
n IIS n Applications Web n Configuration n Trace n Session n Cache n Dploiement n Disponibilit n Scurit n Cot serveur HTTP n Cot client

n Gestion des erreurs n Mise en uvre des

contrles n Dvelopper des formulaires

03/03/2003

83

Creating Controls
n ASP.NET provides two ways to create your

own server-side controls


n

User Controls: Essentially a mini .aspx file


n

Formerly called a Pagelet

Custom Controls: You derive a class from System.Web.UI.Control

03/03/2003

84

42

03/03/2003

Creating Controls
User Controls
n Provide a simple way for page developers to

author controls
n

Stored in a .ascx file

n Not just a server-side include n Enables full encapsulation n Supports nested controls n Separate code namespace n Separate code language n Can partition work across multiple developers n Great way to reuse work across multiple pages and

applications
03/03/2003 85

Creating Controls
Registering User Controls n Registers user control for use on a page
<%@ Register TagPrefix="Acme TagName="Message" Src="pagelet1.aspc" %> ... <Acme:Message runat="server"/>

03/03/2003

86

43

03/03/2003

Creating Controls
Exposing a User Control Object Model
n User controls can expose object model to

pages n Properties, fields, events, methods


n

Just make them public

<script language=C#" runat="server"> public string Color = "blue; </script> <font color=<%=Color%>> This is a simple message pagelet </font>

03/03/2003

87

Creating Controls
Programmatic Use of User Controls
n Page.LoadControl(string source)
n

Dynamically instantiates a user control


foo = Page.LoadControl("foo.ascx"); foo.color = "red;

n Get and customize an instance:

n Insert into the control hierarchy:


myPanel.Controls.Add(foo);

03/03/2003

88

44

03/03/2003

Creating Controls
Custom Controls
n A class that you create n Derived from System.Web.UI.Control
using System; using System.Web; using System.Web.UI; public class MyControl : Control { protected override void Render(HTMLTextWriter w) { w.Write(<h1>Control output</h1>); } }
03/03/2003 89

Creating Controls
Custom Controls
n Must implement Render() method n Can expose properties, methods and events n Should maintain state n Should handle postback data n Can generate client-side script to do postback n Should handle child controls n Render them n Handle events n Can expose and implement templates n Can handle data binding

03/03/2003

90

45

03/03/2003

Creating Controls
Custom Controls vs. User Controls

User Controls
Good for application-specific UI Easy to build Less flexibility, performance, designer support No template support

Custom Controls
Good for reuse, encapsulate common UI Can be more complex to build Total flexibility, better performance, and designer support Can support templates

03/03/2003

91

Agenda
n IIS n Applications Web n Configuration n Trace n Session n Cache n Dploiement n Disponibilit n Scurit n Cot serveur n Cot client

n Gestion des erreurs n Mise en uvre des

contrles n Dvelopper des formulaires

03/03/2003

92

46

03/03/2003

Developing Web Forms


Using Notepad
n Incredibly simple: just create .aspx file as a

text file, edit, and hit the page n Thats how the demos in this module were done n Use tracing as a debugging aid

03/03/2003

93

Developing Web Forms


Using Visual Studio.NET
n Create a new project n Choose Web Application n Specify URL of application

03/03/2003

94

47

03/03/2003

Developing Web Forms


IBuySpy
n http://www.ibuyspy.com

03/03/2003

95

Developing Web Forms


Debugging
n Basic Debugger ships with the SDK n Multi-language n Single stack trace n Breaks, watches, etc. n Visual Studio Debugger n Adds remote debugging support n Supports managed/unmanaged debugging

03/03/2003

96

48

03/03/2003

Developing Web Forms


Debugging
1. Create web.config file in application root
<configuration> <compilation debugmode=true/> </configuration>

2. Attach using debugger 3. Set breakpoints 4. Hit page or service

03/03/2003

97

Pour aller plus loin


n Quick Start Tutorial
http://localhost/quickstart/ASPPlus/default.htm http://msdn.microsoft.com/msdnmag/issues/0900/ASPPlu s/ASPPlus.asp

n ASP.NET Overview n Caching

http://msdn.microsoft.com/voices/asp04262001.asp http://msdn.microsoft.com/library/default.asp?URL=/l ibrary/welcome/dsmsdn/asp12282000.htm

n Session state n Validation


http://msdn.microsoft.com/library/techart/aspplusval id.htm

n Tracing

http://msdn.microsoft.com/library/default.asp?URL=/l ibrary/welcome/dsmsdn/asp01252001.htm

03/03/2003

98

49

Vous aimerez peut-être aussi