Académique Documents
Professionnel Documents
Culture Documents
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
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
n Rpertoire virtuel n Fourni un niveau dindirection entre lURL et la localisation des fichiers n Par exemple :
n
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
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
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)
03/03/2003
Applications Web
global.asax
n Peut contenir du code utilisateur qui capture
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
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
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
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
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
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
2.
3.
03/03/2003
18
03/03/2003
Trace
Trace au niveau applicatif
n Pour activer les traces sur de multiples
pages
1. Crer
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
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
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
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
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
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
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
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
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
15
03/03/2003
cookie (cot client) n Il est aussi possible de sauvegarder le SessionId dans une URL
n
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
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
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
performances et diminue le temps de rponse (facteur dchelle) n ASP.NET fournit le support pour
n n
03/03/2003
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
page
n n
E.g. Accept-Language
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
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
03/03/2003
42
21
03/03/2003
Cache
de donnes
n Il est frquent que quelques pages soit prsente de
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 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.
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
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
03/03/2003
46
23
03/03/2003
Erreur lexcution sont propages sous la forme dexception VB a t tentu et supporte try/catch/finally
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
03/03/2003
48
24
03/03/2003
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
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
03/03/2003
50
25
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
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
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
03/03/2003
54
27
03/03/2003
Disponibilit
n ASP.NET handles failures in user and
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
Interblocage
<processmodel requestqueuelimit=500 />
03/03/2003
56
28
03/03/2003
Availability
Preemptive Recycling
n ASP.NET optionally supports pre-emptive
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
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
OK pour une utilisation sur un Intranet (40,000 comptes) OK pour une utilisation sur un Intranet ou sur Internet
60
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
Certificats Client
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.
03/03/2003
61
Scurit
Autorisation
n tape 1 (authentification) n Qui tes vous ? n Etape 2 (autorisation)
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
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
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
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
n Traitant de requte (handler) n Managed classes n Plusieurs traitant de requte pour une seule application
n
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
34
03/03/2003
HTTP Runtime
HTTPContext
n HttpContext est un objet qui encapsule
System.Web.HttpContext
objets HttpContext
n HttpHandlers et HttpModules peuvent
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
{ { { { { { { {
} } } } } } } }
GetConfig(String name);
35
03/03/2003
HTTP Runtime
HTTPRequest/HTTPResponse
n Les objets HttpRequest/HttpResponse
03/03/2003
71
HTTP Runtime
HttpHandlers
n HttpHandlers permet de traiter des URLs
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
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.
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
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
03/03/2003
39
03/03/2003
HTTP Runtime
HTTP Module Registration
1. Compile and deploy .Net Library DLL within
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
03/03/2003
80
40
03/03/2003
03/03/2003
81
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
03/03/2003
83
Creating Controls
n ASP.NET provides two ways to create your
03/03/2003
84
42
03/03/2003
Creating Controls
User Controls
n Provide a simple way for page developers to
author controls
n
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
<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
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
03/03/2003
92
46
03/03/2003
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
03/03/2003
94
47
03/03/2003
03/03/2003
95
03/03/2003
96
48
03/03/2003
03/03/2003
97
n Tracing
http://msdn.microsoft.com/library/default.asp?URL=/l ibrary/welcome/dsmsdn/asp01252001.htm
03/03/2003
98
49