Vous êtes sur la page 1sur 76

Module 15 : Configuration,

optimisation et déploiement
d'une application Web
Microsoft ASP.NET
Table des matières

Vue d'ensemble 1
Leçon : Utilisation de l'objet Cache 2
Leçon : Utilisation du cache de sortie
d'ASP.NET 14
Leçon : Configuration d'une application
Web ASP.NET 24
Leçon : Déploiement d'une application
Web ASP.NET 42
Contrôle des acquis 50
Atelier 15 : Configuration, optimisation
et déploiement d'une application Web
Microsoft ASP.NET 52
Les informations contenues dans ce document, y compris les adresses URL et les références à des
sites Web Internet, pourront faire l'objet de modifications sans préavis. Sauf mention contraire, les
sociétés, les produits, les noms de domaine, les adresses de messagerie, les logos, les personnes,
les lieux et les événements utilisés dans les exemples sont fictifs et toute ressemblance avec des
sociétés, produits, noms de domaine, adresses de messagerie, logos, personnes, lieux et
événements existants ou ayant existé serait purement fortuite. L'utilisateur est tenu d'observer la
réglementation relative aux droits d'auteur applicable dans son pays. Sans limitation des droits
d'auteur, aucune partie de ce manuel ne peut être reproduite, stockée ou introduite dans un système
d'extraction, ou transmise à quelque fin ou par quelque moyen que ce soit (électronique,
mécanique, photocopie, enregistrement ou autre), sans la permission expresse et écrite de
Microsoft Corporation.

Les produits mentionnés dans ce document peuvent faire l'objet de brevets, de dépôts de brevets en
cours, de marques, de droits d'auteur ou d'autres droits de propriété intellectuelle et industrielle de
Microsoft. Sauf stipulation expresse contraire d'un contrat de licence écrit de Microsoft, la
fourniture de ce document n'a pas pour effet de vous concéder une licence sur ces brevets,
marques, droits d'auteur ou autres droits de propriété intellectuelle.

 2002 Microsoft Corporation. Tous droits réservés.

Microsoft, MS-DOS, Windows, Windows NT, Active Directory, ActiveX, BizTalk, Hotmail,
IntelliSense, Jscript, MSN, MSDN, PowerPoint, Visio, Visual Basic, Visual C++, Visual C#,
Visual J#, Visual Studio, Win32 et Windows Media sont soit des marques déposées de Microsoft
Corporation, soit des marques de Microsoft Corporation, aux États-Unis d'Amérique et/ou dans
d'autres pays.

Les autres noms de produit et de société mentionnés dans ce document sont des marques de leurs
propriétaires respectifs.
Module 15 : Configuration, optimisation et déploiement d'une application Web Microsoft ASP.NET 1

Vue d'ensemble

! Utilisation de l'objet Cache


! Utilisation du cache de sortie d'ASP.NET
! Configuration d'une application Web ASP.NET
! Déploiement d'une application Web ASP.NET

********************Document à l'usage exclusif de l'instructeur********************

Introduction Une fois votre application Web Microsoft® ASP.NET développée, vous pouvez
la déployer sur un serveur de production. Avant le déploiement, vous pouvez
toutefois l'optimiser afin d'en améliorer les performances.
Pour optimiser et déployer votre application Web, vous pouvez effectuer les
opérations suivantes :
! configurer l'objet Cache et le cache de sortie pour optimiser les temps de
réponse de l'application Web ;
! organiser les paramètres de l'application dans les fichiers Machine.config et
Web.config pour prendre en charge et protéger le site Web ;
! sélectionner les fichiers nécessaires à l'exécution du site Web et les copier
sur le serveur de production.
Objectifs À la fin de ce module, vous serez à même d'effectuer les tâches suivantes :
! utiliser l'objet Cache pour stocker des informations ;
! utiliser la mise en cache de sortie d'ASP.NET pour stocker des pages Web et
des fragments de page Web ;
! configurer une application Web ASP.NET à l'aide des fichiers
Machine.config et Web.config ;
! déployer une application Web ASP.NET.
2 Module 15 : Configuration, optimisation et déploiement d'une application Web Microsoft ASP.NET

Leçon : Utilisation de l'objet Cache

! Qu'est-ce que l'objet Cache ?


! Avantages liés à l'utilisation de l'objet Cache
! Utilisation de l'objet Cache
! Suppression des éléments de l'objet Cache
! Démonstration : Utilisation de l'objet Cache

********************Document à l'usage exclusif de l'instructeur********************

Introduction L'une des méthodes les plus efficaces pour améliorer les performances d'une
application Web ASP.NET consiste à utiliser l'objet Cache d'ASP.NET. Cet
objet vous permet de placer des éléments dans la mémoire du serveur pour les
extraire rapidement. Toutefois, le chargement d'un trop grand nombre
d'éléments dans l'objet Cache peut ralentir les temps de réponse du serveur en
réduisant sa quantité de mémoire disponible.
Dans cette leçon, vous étudierez la configuration de l'objet Cache pour
optimiser les temps de réponse d'une application Web.
Objectifs de la leçon À la fin de cette leçon, vous serez à même d'effectuer les tâches suivantes :
! décrire un objet Cache ;
! expliquer les avantages et les inconvénients liés à l'utilisation d'un objet
Cache ;
! utiliser un objet Cache pour stocker et extraire les éléments utilisés par une
application Web ;
! supprimer des éléments de l'objet Cache au bout d'un certain temps ou après
une modification des éléments, afin de limiter l'utilisation de la mémoire.
Module 15 : Configuration, optimisation et déploiement d'une application Web Microsoft ASP.NET 3

Qu'est-ce que l'objet Cache ?

! Objet utilisé pour stocker des informations


" Objet Cache unique par application Web
" Une alternative aux variables d'application
" Non utilisé pour le stockage des informations
dans les variables de sessions
! Utilise des paires de valeurs clé pour stocker et
extraire les éléments
Cache("myKey")
Cache("myKey") == myValue
myValue

Cache["myKey"]
Cache["myKey"] == myValue;
myValue;

********************Document à l'usage exclusif de l'instructeur********************

Introduction Lorsque vous créez des applications Web très performantes, vous devez éviter
toute duplication. Un objet Cache vous permet de mettre en cache (stocker) des
éléments en mémoire lorsqu'ils sont demandés pour la première fois, puis
d'utiliser la copie mise en cache pour les demandes ultérieures. L'utilisation de
la copie en cache vous évite de recréer des informations répondant à une
demande antérieure, plus particulièrement les informations qui nécessitent des
temps processeur importants sur le serveur à chaque création.
ASP.NET offre non seulement une mise en cache d'éléments individuels, tels
que des statistiques dans l'objet Cache, mais également un cache de sortie qui
peut être utilisé pour stocker des pages Web et des contrôles utilisateur. L'objet
Cache et le cache de sortie sont des objets distincts avec des rôles et des
propriétés uniques.
Objet utilisé pour ASP.NET contient un moteur de cache complet qui peut être utilisé pour
stocker des stocker et extraire des informations. L'objet Cache ne dispose d'aucune
informations information sur le contenu des éléments qu'il contient. Il ne possède qu'une
référence à ces objets et offre un processus pour le suivi de leurs dépendances et
la définition des stratégies d'expiration.
L'objet Cache permet également de passer des valeurs entre les pages d'une
même application Web. Dans la mesure où ses méthodes implémentent le
verrouillage automatique, les valeurs sont accessibles simultanément dans
plusieurs pages de manière sécurisée.
4 Module 15 : Configuration, optimisation et déploiement d'une application Web Microsoft ASP.NET

Fonctionnement de Le processus d'utilisation de l'objet Cache est le suivant :


l'objet Cache
1. Une page demande un élément qui a été identifié comme ayant été stocké
dans l'objet Cache.
2. ASP.NET vérifie l'objet Cache et utilise la version mise en cache si elle est
disponible.
3. Si une version mise en cache n'est pas disponible, ASP.NET recrée
l'élément, l'utilise et le stocke dans l'objet Cache pour être utilisé
ultérieurement.
Objet Cache unique par ASP.NET crée un seul objet Cache pour chaque application Web. Les éléments
application Web stockés dans l'objet Cache sont uniques pour l'application Web et ne sont pas
accessibles par d'autres applications Web exécutées sur le même serveur ou sur
d'autres serveurs. Par conséquent, l'utilisation de l'objet Cache pour accroître
les performances de l'application Web n'est pas évolutive pour un seul niveau
d'application Web.
La durée de vie du cache équivaut à celle de l'application Web. Lors du
redémarrage de l'application Web, le cache est recréé.
Stockage de variables L'objet Cache permet de stocker des informations qui peuvent également être
stockées dans des variables d'application. Au lieu de recréer la valeur à chaque
utilisation, il est possible d'accéder à une valeur mise en cache à partir de
n'importe quelle page de l'application Web.
L'objet Cache ne permet pas de stocker des informations contenues dans des
variables de session. Les variables de session peuvent être stockées dans des
cookies, dans l'URL (Uniform Resource Locator) de la page ou dans le contrôle
ViewState masqué.

Remarque Pour plus d'informations sur les variables d'application et de


session, consultez le module 14, « Gestion d'état », du cours 2333A,
Développement d'applications Web Microsoft ASP.NET à l'aide de Visual
Studio .NET.

Utilisation de paires L'objet Cache utilise des paires clé/valeur pour stocker et extraire des objets. La
clé/valeur clé est la chaîne de clé du cache utilisée pour référencer l'objet. La valeur est
l'objet à mettre en cache. Dans le cas le plus simple, placer un élément dans le
cache et l'extraire revient à ajouter un élément dans un dictionnaire.
Pour ajouter un élément dans un objet Cache :
Microsoft Visual Cache("mykey") = myValue
Basic® .NET
C# Cache["mykey"] = myValue;

Pour extraire un élément d'un objet Cache :


Visual Basic .NET myValue = Cache("myKey")

C# myValue = Cache["myKey"];
Module 15 : Configuration, optimisation et déploiement d'une application Web Microsoft ASP.NET 5

Avantages liés à l'utilisation de l'objet Cache

! Plus rapide que la création d'un objet à chaque


demande
! Prise en charge du verrouillage interne
! Gestion automatique des ressources du cache
! Prise en charge des fonctions de rappel
! Prise en charge de la suppression reposant sur
les dépendances

********************Document à l'usage exclusif de l'instructeur********************

Introduction L'objet Cache offre une interface de dictionnaire simple qui permet d'insérer
facilement des valeurs et de les extraire ultérieurement. L'utilisation de l'objet
Cache pour stocker des valeurs présente plusieurs avantages.
Plus rapide que la Un élément stocké en mémoire peut être extrait beaucoup plus rapidement que
création d'un objet à s'il devait être recréé. Par exemple, un DataSet qui contient des données issues
chaque demande d'un ordinateur exécutant Microsoft SQL Server™ doit se reconnecter au
serveur SQL Server à chaque demande de page. Si l'objet DataSet est placé
dans l'objet Cache, l'accès aux données devient beaucoup plus rapide.
Prise en charge du L'objet Cache offre une gestion de verrouillage automatique des éléments
verrouillage interne présents dans le cache ; les demandes simultanées d'un élément ne peuvent donc
pas modifier l'objet. La gestion du verrouillage automatique protège les
transactions intra-processus lors de la mise à jour des éléments.
Gestion automatique ASP.NET supprime automatiquement et régulièrement les éléments du cache.
des ressources du Cette suppression automatique constitue une amélioration par rapport aux
cache versions précédentes du cache qui demandaient une gestion manuelle des
ressources de la part des développeurs.
Prise en charge des Les fonctions de rappel sont du code exécuté lors de la suppression d'un
fonctions de rappel élément du cache. Par exemple, vous pouvez utiliser une fonction de rappel
pour placer la dernière version d'un objet dans le cache dès la suppression de la
version précédente.
Prise en charge de la Si un élément en cache présente une dépendance avec un autre élément ou un
suppression reposant fichier mis en cache, l'objet Cache peut être défini de sorte à supprimer cet
sur les dépendances élément lorsque la dépendance répond à certains critères. Par exemple, si vous
stockez des données d'un fichier XML (Extensible Markup Language) dans le
cache, vous pouvez supprimer les données mises en cache lors d'une
modification du document XML.
6 Module 15 : Configuration, optimisation et déploiement d'une application Web Microsoft ASP.NET

Utilisation de l'objet Cache

! Écriture dans l'objet Cache :


'Méthode
'Méthode implicite
implicite
Cache("myKey")
Cache("myKey") == myValue
myValue

'Méthode
'Méthode explicite
explicite
Cache.Insert("myKey",
Cache.Insert("myKey", myValue,
myValue, Dependency,
Dependency, AbsoluteExpiration,
AbsoluteExpiration, __
SlidingExpiration,
SlidingExpiration, CacheItemPriority,
CacheItemPriority, CacheItemRemovedCallBack)
CacheItemRemovedCallBack)
//Méthode
//Méthode implicite
implicite
Cache["myKey"]
Cache["myKey"] == myValue;
myValue;

//Méthode
//Méthode explicite
explicite
Cache.Insert("myKey",
Cache.Insert("myKey", myValue,
myValue, Dependency,
Dependency, AbsoluteExpiration,
AbsoluteExpiration,
SlidingExpiration,
SlidingExpiration, CacheItemPriority,
CacheItemPriority, CacheItemRemovedCallBack);
CacheItemRemovedCallBack);

! Extraction de valeurs de l'objet Cache :


myValue
myValue == Cache("myKey")
Cache("myKey") myValue
myValue == Cache["myKey"];
Cache["myKey"];

********************Document à l'usage exclusif de l'instructeur********************

Introduction L'objet Cache utilise des paires clé/valeur pour stocker et extraire des éléments.
La clé est la chaîne de clé du cache utilisée pour référencer l'élément. La valeur
est l'élément à mettre en cache.

Écriture dans l'objet Vous pouvez écrire implicitement un élément dans un objet Cache, comme
Cache illustré dans le code suivant :
Visual Basic .NET Cache("mykey") = myValue

C# Cache["mykey"] = myValue;

Vous pouvez également spécifier des paramètres (une limite du temps de


stockage dans l'objet Cache, par exemple) lors de l'insertion d'un élément dans
l'objet Cache. Le code suivant illustre la méthode Insert explicite avec des
paramètres :
Visual Basic .NET Cache.Insert("myKey", myValue, _
Dependency, AbsoluteExpiration, SlidingExpiration, _
CacheItemPriority, CacheItemRemovedCallBack)

C# Cache.Insert("myKey", myValue,
Dependency, AbsoluteExpiration, SlidingExpiration,
CacheItemPriority, CacheItemRemovedCallBack);
Module 15 : Configuration, optimisation et déploiement d'une application Web Microsoft ASP.NET 7

Extraction de valeurs de L'extraction de valeurs de l'objet Cache est très simple : il suffit de fournir la
l'objet Cache clé correcte pour recevoir la valeur.
Le code suivant utilise la clé myKey pour extraire la valeur myValue, puis
affiche myValue si sa valeur n'est pas vide :
Visual Basic .NET myValue = Cache("mykey")
If myValue <> Nothing Then
DisplayData(myValue)
End If

C# myValue = Cache["mykey"];
if (myValue != null)
DisplayData(myValue);
8 Module 15 : Configuration, optimisation et déploiement d'une application Web Microsoft ASP.NET

Suppression des éléments de l'objet Cache

! AbsoluteExpiration
DateTime.Now.AddMinutes(5)
DateTime.Now.AddMinutes(5)
! SlidingExpiration
TimeSpan.FromSeconds(20)
TimeSpan.FromSeconds(20)
! Dépendant d'une valeur modifiée
AddCacheItemDependency("Variable.Value")
AddCacheItemDependency("Variable.Value")
! Priorité de l'élément Cache
CacheItemPriority.High
CacheItemPriority.High

********************Document à l'usage exclusif de l'instructeur********************

Introduction L'objet Cache d'ASP.NET a été conçu pour ne pas utiliser une trop grande
quantité de mémoire du serveur. Par conséquent, il supprime automatiquement
les derniers éléments utilisés lorsque la mémoire disponible devient rare. Vous
pouvez influencer la façon dont l'objet Cache enregistre et supprime les
éléments en définissant des limites de temps, des dépendances et des priorités
pour les éléments qu'il contient.
Les éléments de l'objet Cache sont supprimés dès le déclenchement d'une
dépendance ou d'une limite de temps. Les tentatives d'extraction des éléments
supprimés retournent une valeur null sauf si l'élément est rajouté à l'objet
Cache.
AbsoluteExpiration Vous pouvez définir la durée de vie maximale absolue d'un élément à l'aide du
paramètre AbsoluteExpiration. Ce paramètre de type DateTime vous permet
de spécifier le moment de l'expiration de l'élément.
Le code suivant définit la suppression de myValue de l'objet Cache cinq
minutes après sa création :
Visual Basic .NET Cache.Insert("myKey", myValue, Nothing, _
DateTime.Now.AddMinutes(5), Nothing)

C# Cache.Insert("myKey", myValue, null, _


DateTime.Now.AddMinutes(5), Cache.NoSlidingExpiration);
Module 15 : Configuration, optimisation et déploiement d'une application Web Microsoft ASP.NET 9

SlidingExpiration Vous pouvez définir la durée de vie maximale relative d'un élément à l'aide du
paramètre SlidingExpiration. Ce paramètre de type TimeSpan vous permet de
spécifier l'intervalle entre le moment du dernier accès de l'objet mis en cache et
le moment de l'expiration de l'objet.
Le code suivant définit la suppression de myValue de l'objet Cache
20 secondes après son dernier accès :
Visual Basic .NET Cache.Insert("myKey", myValue, Nothing, _
Nothing, TimeSpan.FromSeconds(20))

C# Cache.Insert("myKey", myValue, null, _


null, TimeSpan.FromSeconds(20));

Dépendances La suppression d'un objet de l'objet Cache est parfois nécessaire en raison de la
modification d'un élément de prise en charge, tel qu'un fichier. ASP.NET vous
permet de définir la validité d'un élément mis en cache, selon les dépendances
de fichier ou d'un autre élément mis en cache. Les dépendances qui reposent sur
des fichiers ou des répertoires externes sont des dépendances de fichier, tandis
que les dépendances qui reposent sur un autre élément mis en cache sont des
dépendances de clé. Si une dépendance change, l'élément mis en cache devient
non valide et est supprimé de l'objet Cache.
Le code suivant définit la suppression de myValue de l'objet Cache lors de la
modification du fichier myDoc.xml :
Visual Basic .NET Cache.Insert("myKey", myValue, _
new CacheDependency(Server.MapPath("myDoc.xml")))

C# Cache.Insert("myKey", myValue, new


CacheDependency(Server.MapPath("myDoc.xml")));

Priorité de l'élément Lorsque la mémoire du serveur Web devient insuffisante, l'objet Cache
Cache supprime, de façon sélective, des éléments pour libérer de la mémoire système.
Il est peu probable que les éléments dont la valeur de priorité est élevée soit
supprimés, contrairement aux éléments dont la valeur de priorité est faible.
Le code suivant attribue une priorité élevée à myValue et spécifie qu'il doit être
l'un des derniers éléments à être supprimé de l'objet Cache lorsque la mémoire
du serveur devient limitée :
Visual Basic .NET Cache.Insert("myKey", myValue, Nothing, Nothing, _
Nothing, CacheItemPriority.High, onRemove)

C# Cache.Insert("myKey", myValue, null, null,


Cache.NoSlidingExpiration, CacheItemPriority.High, onRemove);
10 Module 15 : Configuration, optimisation et déploiement d'une application Web Microsoft ASP.NET

Exemple de définition Le code suivant insère une valeur pour MyBook dans l'objet Cache avec un
des paramètres dans certain nombre d'arguments de paramètres. L'événement de dépendance ou de
Cache.Insert dépassement du délai d'attente qui se produit en premier lieu est celui qui
supprime l'élément de l'objet Cache :
! suppression de l'élément 5 minutes après son stockage ;
! suppression de l'élément 30 secondes après le dernier accès ;
! suppression de l'élément en cas de modification du fichier Books.xml ;
! attribution d'une priorité élevée à l'élément pour le supprimer en dernier lieu
si les ressources du serveur deviennent insuffisantes ;
! exécution de la fonction de rappel onRemove lors de la suppression de
l'élément de l'objet Cache.
Visual Basic .NET Cache.Insert("MyBook.CurrentBook", CurrentBook, _
new CacheDependency(Server.MapPath("Books.xml")), _
DateTime.Now.AddMinutes(5), _
TimeSpan.FromSeconds(30), _
CacheItemPriority.High, onRemove)

C# Cache.Insert("MyBook.CurrentBook", CurrentBook,
new CacheDependency(Server.MapPath("Books.xml")),
DateTime.Now.AddMinutes(5),
TimeSpan.FromSeconds(30),
CacheItemPriority.High, onRemove);
Module 15 : Configuration, optimisation et déploiement d'une application Web Microsoft ASP.NET 11

Démonstration : Utilisation de l'objet Cache

! Exécution de la page CacheTest.aspx


sans l'objet Cache activé
! Exécution de la page CacheTest.aspx
avec l'objet Cache activé
! Exécution de la page CacheTest.aspx
avec l'objet Cache activé et une
dépendance

********************Document à l'usage exclusif de l'instructeur********************

Introduction Dans cette démonstration, vous allez découvrir comment utiliser l'objet Cache
avec un DataGrid.
Tous les fichiers de cette démonstration figurent dans le projet Mod15VB ou
Mod15CS de la solution 2333Demos.

! Pour exécuter la démonstration


Exécution sans mise 1. Ouvrez la page CacheTest.aspx.
en cache
2. Affichez la page code-behind.
Signalez que le DataSet lit un fichier XML qui permet de remplir le
DataGrid.
3. Définissez le projet Mod15 en tant que projet de démarrage, la page
CacheTest.aspx en tant que page de démarrage du projet, puis affichez la
page dans Microsoft Internet Explorer.

Remarque Il est important d'utiliser Internet Explorer pour cette


démonstration en raison des différences de fonctionnalités entre le
navigateur intégré de Microsoft Visual Studio® .NET et Internet Explorer.

Activation de la mise en 4. Dans le fichier CacheTest.aspx.vb ou CacheTest.aspx.cs, transformez les


cache lignes suivantes en commentaire dans les procédures d'événement
Page_Load et dgXML_PageIndexChanged :
Visual Basic .NET 'mise en commentaire de cette ligne pour la mise en cache

C# //mise en commentaire de cette ligne pour la mise en cache


12 Module 15 : Configuration, optimisation et déploiement d'une application Web Microsoft ASP.NET

5. Supprimez la mise en commentaire de tout le code restant dans les


procédures d'événement Page_Load et dgXML_PageIndexChanged.
Expliquez comment ce code supplémentaire crée une nouvelle clé de cache,
intitulée dsCache, qui place l'objet DataSet nommé dsXML dans le cache
et définit une période d'expiration absolue à deux minutes.
6. Cliquez sur Démarrer pour générer la page CacheTest.aspx et l'afficher
dans Internet Explorer.
Vérifiez si le DataGrid est rempli avec les données XML et si la
fonctionnalité de pagination fonctionne.
Test de la mise en cache 7. Laissez Internet Explorer ouvert et ouvrez le fichier pubs.xml dans
Visual Studio .NET.
8. Remplacez le titre du premier livre répertorié par un titre facilement
repérable par les stagiaires, puis enregistrez le fichier.
9. Dans Internet Explorer, affichez la Page 1 du DataGrid.
Si celle-ci est déjà affichée, affichez une autre page puis revenez à la
Page 1.
10. Montrez aux stagiaires que le titre du premier livre répertorié n'a pas
changé, car les informations proviennent du cache.
11. Affichez une autre page, patientez pendant au moins 2 minutes, puis
affichez de nouveau la première page.
Le DataGrid affiche à présent le nouveau titre du premier livre.
12. Fermez Internet Explorer.
Ajout d'une dépendance 13. Ouvrez la page CacheTest.aspx.vb ou CacheTest.aspx.cs.
14. Pour les lignes de code Cache.Insert des pages CacheTest.aspx.vb ou
CacheTest.aspx.cs, ajoutez une dépendance au fichier pubs.xml. Votre code
doit ressembler à ce qui suit :
Visual Basic .NET Cache.Insert("dsCache", dsXML, New _
System.Web.Caching.CacheDependency _
(Server.MapPath("pubs.xml")), _
DateTime.Now.AddMinutes(1), Nothing)

C# Cache.Insert("dsCache", dsXML, new


System.Web.Caching.CacheDependency
(Server.MapPath("pubs.xml")),
DateTime.Now.AddMinutes(1), Cache.NoSlidingExpiration);

15. Cliquez avec le bouton droit sur le projet Mod15VB ou Mod15CS dans
l'Explorateur de solutions, puis cliquez sur Générer.
16. Cliquez avec le bouton droit sur CacheTest.aspx, puis cliquez sur
Naviguer avec… Dans la boîte de dialogue Naviguer avec, cliquez sur
Microsoft Internet Explorer, puis sur Parcourir.
17. Cliquez sur Démarrer pour générer la page CacheTest.aspx et l'afficher
dans Internet Explorer.
18. Laissez Internet Explorer ouvert et ouvrez le fichier pubs.xml dans
Visual Studio .NET.
19. Remplacez le titre du premier livre répertorié par un titre facilement
repérable par les stagiaires. Enregistrez le fichier pubs.xml.
Module 15 : Configuration, optimisation et déploiement d'une application Web Microsoft ASP.NET 13

20. Dans Internet Explorer, affichez la Page 1 du DataGrid.


Si celle-ci est déjà affichée, affichez une autre page puis revenez à la
Page 1.
21. Montrez aux stagiaires que les informations du DataGrid ont changé pour
refléter les modifications apportées au fichier pubs.xml, car le cache est
dépendant de ce fichier.
14 Module 15 : Configuration, optimisation et déploiement d'une application Web Microsoft ASP.NET

Leçon : Utilisation du cache de sortie d'ASP.NET

! Présentation multimédia : Mise en cache de sortie


! Types de caches de sortie
! Utilisation des caches de sortie de page
! Démonstration : Mise en cache de sortie de page
! Utilisation de la mise en cache de fragments

********************Document à l'usage exclusif de l'instructeur********************

Introduction Lors de la création d'applications Web très performantes, les développeurs


doivent tenir compte de la nécessité de minimiser les temps de réponse aux
demandes de page. Vous pouvez supprimer les temps de traitement nécessaires
à la recréation d'une page en stockant des parties ou la totalité d'une page en
mémoire lors de la première demande et en utilisant ces parties ou l'ensemble
stocké de la page lors des demandes ultérieures.
Dans cette leçon, vous étudierez la configuration du cache de sortie pour
minimiser les temps de réponse d'une application Web.
Objectifs de la leçon À la fin de cette leçon, vous serez à même d'effectuer les tâches suivantes :
! expliquer les raisons pour lesquelles utiliser la mise en cache de sortie ;
! expliquer les différents types de cache de sortie ;
! utiliser la mise en cache de sortie de page ;
! utiliser la mise en cache de sortie de fragments de page.
Module 15 : Configuration, optimisation et déploiement d'une application Web Microsoft ASP.NET 15

Présentation multimédia : Mise en cache de sortie

********************Document à l'usage exclusif de l'instructeur********************

Introduction Dans cette animation, vous allez découvrir comment le cache de sortie de page
affecte les temps de réponse du serveur lorsqu'un formulaire Web ASP.NET est
demandé plusieurs fois.
16 Module 15 : Configuration, optimisation et déploiement d'une application Web Microsoft ASP.NET

Types de caches de sortie

! Mise en cache de page


! Mise en cache de fragment de page sous forme
d'un contrôle utilisateur
! Mise en cache de service Web XML

********************Document à l'usage exclusif de l'instructeur********************

Introduction ASP.NET offre une mise en cache de sortie de page, qui vous permet de stocker
des formulaires Web et des contrôles utilisateur dans leur intégralité dans la
mémoire du serveur. Après la première demande, le code du formulaire Web,
du contrôle utilisateur ou du service Web XML n'est pas exécuté ; c'est la sortie
mise en cache qui est utilisée pour répondre à la demande.
ASP.NET crée un seul cache de sortie pour chaque serveur Web. Les pages et
fragments de page stockés dans le cache de sortie sont uniques pour le serveur
Web et ne sont pas accessibles par d'autres serveurs d'une batterie de serveurs
Web (Web farm). Par conséquent, l'utilisation du cache de sortie pour accroître
les performances du serveur n'est pas évolutive pour un seul niveau de serveur
Web.
Mise en cache de page La mise en cache des pages vous permet de mettre en cache du contenu
dynamique. Lors de la première demande d'un formulaire Web, la page est
compilée et mise en cache dans le cache de sortie ; elle est alors disponible pour
la prochaine demande. La page mise en cache est supprimée lorsque le fichier
source est modifié ou lorsque le délai d'expiration du cache est atteint.
Mise en cache de La mise en cache d'une page entière peut s'avérer parfois difficile, car certaines
fragment de page sous parties de la page sont créées de manière dynamique à chaque demande. Dans
forme d'un contrôle ce cas, il peut être utile d'identifier les objets ou les données associées à la
utilisateur demande de page qui changent peu et dont la création ne nécessite pas
beaucoup de ressources serveur. Après avoir identifié ces objets ou données,
vous pouvez les isoler du reste de la page en les créant sous la forme de
contrôles utilisateur et en mettant en cache dans le cache de sortie de page.
Un exemple de fragment de page qu'il est utile de mettre en cache est un en-tête
de page contenant des graphiques statiques ou un système de menu latéral.
Module 15 : Configuration, optimisation et déploiement d'une application Web Microsoft ASP.NET 17

Mise en cache de Les services Web XML prennent également en charge la mise en cache pour
service Web XML améliorer les performances des réponses. Dans l'attribut WebMethod, ajoutez
la propriété CacheDuration et définissez la valeur sur le nombre de secondes
durant lequel la méthode de service Web XML doit demeurer dans le cache de
sortie.
Par exemple, le code suivant place le résultat de l'attribut WebMethod appelé
CachedInfo dans le cache de sortie pendant cinq minutes :
Visual Basic .NET <WebMethod(CacheDuration:=300)> _
Public Function CachedInfo() As String
...
End Function

C# [WebMethod(CacheDuration=300)]
public string CachedInfo()
{
...
}

Important La création d'un cache de sortie pour une application doit


correspondre à la dernière tâche du développement de l'application Web. Sinon,
lors du débogage des pages, vous risquez de récupérer des pages obsolètes,
stockées dans le cache de sortie, au lieu des pages récentes et modifiées.
18 Module 15 : Configuration, optimisation et déploiement d'une application Web Microsoft ASP.NET

Utilisation des caches de sortie de page

! Contenu mis en cache de pages dynamiques


! Disponibilité de l'ensemble de la page Web dans
le cache
! Définition de la durée du cache en secondes
! Définition de la propriété VaryByParam pour
contrôler le nombre de variations de pages dans
le cache
<%@
<%@ OutputCache
OutputCache Duration="900"
Duration="900"
VaryByParam="none"
VaryByParam="none" %>
%>

********************Document à l'usage exclusif de l'instructeur********************

Introduction ASP.NET offre une mise en cache de sortie de page, qui vous permet de stocker
des formulaires Web demandés dans la mémoire du serveur. Après la première
demande, le code du formulaire Web n'est pas exécuté ; c'est la sortie mise en
cache qui est utilisée pour répondre à la demande.
Contenu mis en cache Pour charger une page dans le cache de sortie, vous devez ajouter la directive
de pages dynamiques OutputCache au formulaire Web. Cette directive contient deux propriétés : une
propriété Duration qui définit, en secondes, le temps de stockage maximal de
la page mise en cache et une propriété VaryByParam qui détermine le moment
où une nouvelle copie de la page est créée dans le cache, selon les paramètres
passés à la page.
Disponibilité de La mise en cache de sortie permet de répondre aux demandes d'une page
l'ensemble de la page particulière à partir du cache, de sorte que le code qui a créé la page ne doit pas
Web dans le cache être exécuté pour les demandes suivantes. L'utilisation de la mise en cache de
sortie pour stocker les pages les plus fréquemment visitées de votre site Web
peut réduire considérablement le temps de réponse de la page du serveur Web.
Définition de la durée du Pour spécifier la valeur du délai d'expiration du cache pour une page, vous
cache devez définir la directive de page OutputCache. Par exemple, pour mettre en
cache une page ASP.NET pendant 15 minutes, ajoutez la directive de page
OutputCache suivante à la page .aspx :
<%@ OutputCache Duration="900" VaryByParam="None"%>

La propriété Duration est exprimée en secondes. La valeur par défaut est


0 seconde, ce qui signifie que la réponse n'est pas mise en cache.
Module 15 : Configuration, optimisation et déploiement d'une application Web Microsoft ASP.NET 19

Définition de La propriété VaryByParam permet de déterminer si ASP.NET doit créer


VaryByParam plusieurs versions de la page mise en cache lorsque les demandes de page
passent des paramètres spécifiques. L'attribution de la valeur "none" à la
propriété VaryByParam signifie qu'une seule version de la page sera mise en
cache. L'attribution de la valeur "*" à la propriété signifie que toute variation
des paramètres de la page placera une nouvelle version de la page dans le cache.
L'identification d'un ou plusieurs paramètres signifie que les modifications de
ces paramètres uniquement entraîneront la mise en cache de nouvelles pages.
Par exemple, la directive ci-dessous d'un fichier .aspx définit une expiration de
60 secondes pour la sortie mise en cache de chaque page générée
dynamiquement et nécessite donc la création d'une nouvelle page dans le cache
de sortie pour chaque nouveau productID :
<%@ OutputCache Duration="60" VaryByParam="productID"%>

Attention Lors de l'utilisation de la directive OutputCache, les attributs


Duration et VaryByParam sont requis. Si vous n'incluez pas ces attributs, une
erreur d'analyse se produit à la première demande de la page. Si vous ne
souhaitez pas utiliser la fonctionnalité offerte par l'attribut VaryByParam,
attribuez-lui la valeur "none".
20 Module 15 : Configuration, optimisation et déploiement d'une application Web Microsoft ASP.NET

Démonstration : Mise en cache de sortie de page

! Démonstration de la modification
d'une page non mise en cache à
chaque actualisation
! Démonstration de la non-modification
d'une page mise en cache à chaque
actualisation
! Démonstration de la mise en cache
d'une nouvelle page suite à la
modification d'un paramètre

********************Document à l'usage exclusif de l'instructeur********************

Introduction Dans cette démonstration, vous allez découvrir comment la mise en cache de
sortie de page optimise une application Web. Vous verrez tout d'abord une page
qui exécute une fonction d'horloge qui n'est pas mise en cache. Vous
découvrirez ensuite la même page avec une durée de cache de sortie de
10 secondes. Vous verrez enfin comment la modification de la propriété
VaryByParam contrôle la mise en cache de plusieurs versions de la page.
Tous les fichiers de cette démonstration figurent dans le projet Mod15VB ou
Mod15CS de la solution 2333Demos.

! Pour exécuter la démonstration


Démonstration de la 1. Ouvrez la page OutputCache.aspx du projet Mod15 dans
modification d'une page Visual Studio .NET.
non mise en cache à
chaque actualisation 2. Montrez le code permettant d'obtenir l'heure et la date actuelles, puis
affichez le code dans une étiquette.
3. Générez et parcourez la page.
4. Rechargez la page plusieurs fois de suite pour montrer que les secondes
changent.
Démonstration de la 5. Ajoutez la directive ci-dessous à la page, après la ligne de code qui contient
non-modification d'une la directive de page.
page mise en cache à
chaque actualisation <%@ OutputCache Duration="10" VaryByParam="none"%>

6. Générez et parcourez la page.


7. Rechargez la page plusieurs fois de suite pour montrer que les secondes
changent seulement après un intervalle de 10 secondes.
8. Vous pouvez ajouter un paramètre ?Name=Someone factice pour
démontrer l'absence d'impact sur la mise en cache. La page est mise en
cache, quelle que soit la valeur du paramètre.
Module 15 : Configuration, optimisation et déploiement d'une application Web Microsoft ASP.NET 21

Démonstration de la 9. Ouvrez la page OutputCacheVaryByParam.aspx.


mise en cache d'une
nouvelle page suite à la 10. Montrez la directive OutputCache avec la propriété VaryByParam.
modification d'un 11. Générez et parcourez la page.
paramètre
12. À la fin de l'URL, ajoutez le paramètre ?Name=Someone.
13. Montrez l'impact sur le cache de sortie lorsque la valeur du paramètre
?Name=Someone est remplacée par un paramètre ?Name=Someone2.
22 Module 15 : Configuration, optimisation et déploiement d'une application Web Microsoft ASP.NET

Utilisation de la mise en cache de fragments

! Conversion d'un fragment de page en contrôle


utilisateur
! Définition des propriétés Duration et varyByParam

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

********************Document à l'usage exclusif de l'instructeur********************

Introduction Pour mettre en cache certaines parties d'une page uniquement, vous devez les
isoler du reste de la page en les plaçant dans un contrôle utilisateur. Ensuite,
vous devez mettre en cache le contrôle utilisateur durant une certaine période ;
cette procédure s'appelle la mise en cache de fragments.
La mise en cache de fragments vous permet de séparer les parties d'une page
(par exemple, les requêtes de base de données qui nécessitent beaucoup de
temps processeur) du reste de la page. Grâce à la mise en cache de fragments,
vous pouvez sélectionner uniquement les parties de la page (celles nécessitant
peu de ressources serveur ou celles devant être créées à chaque demande, par
exemple) à générer automatiquement à chaque demande.
Les éléments conseillés pour la mise en cache de fragments sont les en-têtes, les
pieds de page et les listes déroulantes utilisés par plusieurs pages.
Conversion d'un Après avoir identifié les parties de la page à mettre en cache, vous devez créer
fragment en contrôle des contrôles utilisateur qui encapsulent chacun de ces fragments.
utilisateur
Remarque Pour plus d'informations sur la création des contrôles utilisateur,
consultez le module 8, « Création de contrôles utilisateur », du cours 2333A,
Développement d'applications Web Microsoft ASP.NET à l'aide de Visual
Studio .NET.
Module 15 : Configuration, optimisation et déploiement d'une application Web Microsoft ASP.NET 23

Définition des propriétés La définition de la stratégie de mise en cache des contrôles utilisateur (par
Duration et exemple, la durée et le nombre des variations stockées) est identique à celle de
VaryByParam la stratégie de mise en cache de page. Ces stratégies sont définies à l'aide de la
directive OutputCache.
Par exemple, si vous insérez la directive suivante en haut d'un fichier de
contrôle utilisateur, une version du contrôle utilisateur est stockée dans le cache
de sortie pendant deux minutes et une seule version du contrôle utilisateur est
mise en cache :
<%@ OutputCache Duration="120" VaryByParam="none"%>
24 Module 15 : Configuration, optimisation et déploiement d'une application Web Microsoft ASP.NET

Leçon : Configuration d'une application Web ASP.NET


! Présentation des méthodes de configuration
! Configuration d'un serveur Web à l'aide du fichier
Machine.config
! Configuration d'une application à l'aide du fichier
Web.config
! Présentation de l'héritage de configuration
! Démonstration : Configuration de l'héritage
! Application pratique : Détermination de l'héritage de
configuration
! Stockage et extraction de données dans le fichier
Web.config
! Utilisation des propriétés dynamiques
! Démonstration : Utilisation des propriétés
dynamiques

********************Document à l'usage exclusif de l'instructeur********************

Introduction Avant de déployer une application Web ASP.NET, vous devez organiser ses
paramètres dans les fichiers Machine.config et Web.config. Dans cette leçon,
vous apprendrez à configurer une application Web ASP.NET.
Objectifs de la leçon À la fin de cette leçon, vous serez à même d'effectuer les tâches suivantes :
! expliquer les méthodes de configuration d'une application Web ;
! configurer un serveur Web à l'aide du fichier Machine.config ;
! configurer une application à l'aide des fichiers Web.config ;
! expliquer comment les fichiers Web.config héritent du fichier
Machine.config et d'autres fichiers Web.config ;
! stocker et extraire des données à l'aide des fichiers Web.config ;
! utiliser des propriétés dynamiques pour stocker des valeurs de propriété.
Module 15 : Configuration, optimisation et déploiement d'une application Web Microsoft ASP.NET 25

Présentation des méthodes de configuration

! Fichier Machine.config
" Paramètres au niveau de l'ordinateur
! Fichiers Web.config
" Paramètres au niveau de l'application et des
répertoires
! Les fichiers Machine.config et Web.config ont les
propriétés suivantes :
" XML bien formé
" camelCase
" Extensibles

********************Document à l'usage exclusif de l'instructeur********************

Introduction Les informations de configuration des ressources ASP.NET sont contenues


dans un ensemble de fichiers de configuration. Chaque fichier de configuration
contient une hiérarchie imbriquée de balises et de sous-balises XML avec des
attributs qui définissent les paramètres de configuration.
L'infrastructure de configuration d'ASP.NET n'émet aucune hypothèse quant
aux types de données de configuration qu'elle prend en charge.
Machine.config Les paramètres de configuration de l'ordinateur sont stockés dans le fichier
Machine.config. Il n'existe qu'un seul fichier Machine.config par serveur Web.
Par conséquent, ce fichier peut être utilisé pour stocker les paramètres
applicables à toutes les applications Web ASP.NET résidant sur ce serveur
Web.
Web.config Les paramètres d'application et de répertoire sont stockés dans les fichiers
Web.config. Chaque application Web possède un fichier Web.config au
minimum. Les répertoires virtuels peuvent posséder leurs propres fichiers
Web.config qui contiennent des paramètres spécifiques au répertoire.
Attributs du Dans la mesure où les balises des fichiers Machine.config et Web.config
fichier .config doivent être écrites en langage XML bien formé, les balises, les sous-balises et
les attributs respectent la casse. Les noms de balise et d'attribut utilisent la casse
camelCased : le premier caractère d'un nom de balise doit être en minuscule et
la première lettre des mots concaténés suivants, en majuscule. Toutes les
informations de configuration d'un fichier .config figurent entre les balises
XML racines <configuration> et </configuration>.
26 Module 15 : Configuration, optimisation et déploiement d'une application Web Microsoft ASP.NET

Configuration d'un serveur Web à l'aide du fichier Machine.config

! Les paramètres du fichier Machine.config


affectent toutes les applications Web sur le
serveur
" Fichier Machine.config unique par serveur Web
" La plupart des paramètres peuvent être
remplacés au niveau de l'application à l'aide des
fichiers Web.config

********************Document à l'usage exclusif de l'instructeur********************

Introduction Le fichier de configuration de l'ordinateur, Machine.config, contient les


paramètres applicables à l'ensemble d'un ordinateur. Il n'existe qu'un seul fichier
Machine.config par serveur Web.
Le fichier Machine.config se trouve dans le répertoire suivant, où version
représente la version Microsoft .NET Framework installée sur le serveur Web :
C:\WINDOWS\Microsoft .NET \Framework\version\CONFIG\Machine.config
Les paramètres affectent Les paramètres du fichier Machine.config affectent toutes les applications Web
toutes les applications qui se trouvent sur le serveur. Le système de configuration recherche l'élément
Web <appSettings> dans le fichier Machine.config, puis les paramètres de
remplacement locaux dans les fichiers Web.config de l'application.
L'insertion des paramètres d'application Web dans le fichier Machine.config
présente les avantages et les inconvénients suivants :
! Avantages du fichier Machine.config
L'insertion de paramètres dans le fichier Machine.config peut faciliter la
gestion de votre système, car vous ne devez rechercher, modifier ou gérer
qu'un seul fichier de configuration.
! Inconvénients du fichier Machine.config
Lorsque vous déployez une application Web vers un nouveau serveur, les
paramètres de l'application Web présents dans le fichier Machine.config ne
sont pas copiés sur le nouveau serveur Web.
Module 15 : Configuration, optimisation et déploiement d'une application Web Microsoft ASP.NET 27

Configuration d'une application à l'aide du fichier Web.config

! Un fichier Web.config au minimum par


application Web
! Toutes les informations de configuration de
l'application sont contenues dans les fichiers
Web.config
! Une section pour chaque catégorie principale de
fonctionnalité ASP.NET
" Sécurité
" Mode
" Paramètres généraux de l'application
" Traçage

********************Document à l'usage exclusif de l'instructeur********************

Introduction Dans ASP.NET, vous pouvez partager les informations et les paramètres entre
plusieurs pages Web en stockant les paramètres d'application Web dans un
emplacement central : le fichier Web.config. Vous pouvez également stocker
des informations et des paramètres locaux dans des répertoires virtuels en créant
des fichiers Web.config locaux supplémentaires.
Un seul fichier Web.config se situe toujours dans le dossier racine de
l'application Web. Les fichiers Web.config supplémentaires peuvent se trouver
dans le dossier du répertoire virtuel auquel ils appartiennent.
Un fichier Web.config au La présence d'un fichier Web.config dans un répertoire donné est facultative.
minimum par application En cas d'absence de ce fichier, tous les paramètres de configuration de ce
Web répertoire sont automatiquement hérités du répertoire parent, le fichier
Web.config.
Une section pour Un fichier Web.config contient des sections pour chaque catégorie principale de
chaque catégorie fonctionnalité ASP.NET, comme illustré dans le tableau ci-dessous.
principale de
fonctionnalité ASP.NET Nom de la section Description
<browserCaps> Chargée du contrôle des paramètres du composant des
fonctionnalités du navigateur.
<compilation> Chargée de tous les paramètres de compilation utilisés par
ASP.NET.
<globalization> Chargée de la configuration des paramètres de globalisation
d'une application.
<httpModules> Chargée de la configuration des modules HTTP (Hypertext
Transfer Protocol) dans une application. Les modules HTTP
participent au traitement de chaque demande dans une
application. La sécurité et la journalisation en sont des
utilisations courantes.
<httpHandlers> Chargée du mappage des URL entrantes aux classes
IHttpHandler. Les sous-répertoires n'héritent pas de ces
paramètres.
28 Module 15 : Configuration, optimisation et déploiement d'une application Web Microsoft ASP.NET

(suite)
Nom de la section Description
<processModel> Chargée de la configuration des paramètres du modèle de
processus ASP.NET sur les serveurs Web IIS (Internet
Information Services).
<authentication> Chargée de tous les paramètres de sécurité utilisés par la classe
<identity> de sécurité ASP.NET httpModule.
<authorization>
<sessionState> Chargée de la configuration de la classe httpModule d'état de
session.
<trace> Chargée de la configuration du service de traçage d'ASP.NET.

Remarque Pour plus d'informations sur la configuration de la sécurité dans le


fichier Web.config, consultez le module 16, « Sécurisation d'une application
Web Microsoft ASP.NET », du cours 2333A, Développement d'applications
Web Microsoft ASP.NET à l'aide de Visual Studio .NET.
Module 15 : Configuration, optimisation et déploiement d'une application Web Microsoft ASP.NET 29

Présentation de l'héritage de configuration

! Le fichier Web.config au
CONFIG
CONFIG niveau de l'application
hérite des paramètres du
Machine.config fichier Machine.config
! Les paramètres en conflit
du fichier Web.config
VirtualDir
VirtualDir
remplacent les
paramètres hérités
Web.config ! Les répertoires
individuels peuvent
hériter de fichiers
SubDir
SubDir Web.config et remplacer
les paramètres du fichier
Web.config Web.config de
l'application

********************Document à l'usage exclusif de l'instructeur********************

Introduction Lorsqu'un serveur Web reçoit une demande relative à une ressource Web
particulière, ASP.NET détermine hiérarchiquement les paramètres de
configuration de cette ressource. ASP.NET utilise tous les fichiers de
configuration situés dans le chemin d'accès du répertoire virtuel de la ressource
demandée. Le paramètre de configuration de niveau inférieur peut remplacer les
paramètres fournis dans les fichiers de configuration du répertoire parent.
Les fichiers de configuration doivent respecter les règles suivantes quant à leur
héritage :
! les fichiers Web.config de l'application héritent des paramètres du fichier
Machine.config ;
! les paramètres en conflit d'un fichier Web.config enfant remplacent les
paramètres hérités ;
! les répertoires individuels peuvent hériter de fichiers Web.config et
remplacer les paramètres du fichier Web.config de l'application.
Machine.config Le fichier de niveau le plus élevé est le fichier Machine.config. Ses paramètres
s'appliquent à tous les répertoires et sous-répertoires d'ASP.NET. Il est installé
avec Microsoft .NET Framework et contient de nombreux paramètres
ASP.NET par défaut.
Par exemple, le paramètre par défaut de la section de configuration de la
sécurité du fichier Machine.config permet aux utilisateurs d'accéder à toutes les
ressources URL. Par conséquent, chaque application Web autorise l'accès à
toutes les ressources URL, sauf si le paramètre est remplacé dans Web.config.
30 Module 15 : Configuration, optimisation et déploiement d'une application Web Microsoft ASP.NET

Web.config Des informations de configuration supplémentaires d'une application Web


ASP.NET sont contenues dans des fichiers de configuration, appelés
Web.config, qui se trouvent dans les mêmes répertoires que ceux des fichiers de
l'application. Les répertoires enfants héritent des paramètres des répertoires
parents, sauf si ces derniers sont remplacés par un fichier Web.config dans le
répertoire enfant.
Par exemple, si le fichier Web.config du répertoire racine (VirtualDir) d'une
application Web contient une section de configuration de la sécurité qui autorise
l'accès uniquement à certains utilisateurs, le sous-répertoire SubDir hérite de ce
paramètre de sécurité. Par conséquent, tous les utilisateurs ont accès aux
ressources ASP.NET dans le répertoire racine de l'application, VirtualDir, mais
seuls certains utilisateurs ont accès aux ressources ASP.NET dans SubDir.
Les fichiers Web.config de l'application se trouvent dans VirtualDir et le
sous-répertoire SubDir est situé dans le répertoire :
C:\Inetpub\wwwroot\VirtualDir\Web.config
C:\Inetpub\wwwroot\VirtualDir\SubDir\Web.config
Module 15 : Configuration, optimisation et déploiement d'une application Web Microsoft ASP.NET 31

Démonstration : Configuration de l'héritage

! Création d'un sous-dossier


contenant Web.config
! Différences entre le fichier
Web.config principal et le fichier
Web.config du sous-dossier
! Montrez comment le formulaire Web
lit les informations des fichiers
Web.config
! Suppression de Web.config du sous-
dossier et actualisation du formulaire
Web

********************Document à l'usage exclusif de l'instructeur********************

Introduction Dans cette démonstration, vous allez découvrir comment les paramètres de
configuration sont hérités d'un fichier Web.config dans un deuxième fichier
Web.config situé dans un sous-répertoire.
Tous les fichiers de cette démonstration figurent dans le projet Mod15VB ou
Mod15CS de la solution 2333Demos.

! Pour exécuter la démonstration


Création d'un 1. Ouvrez la solution 2333Demos.
sous-dossier contenant
Web.config
Différences entre le 2. Dans Visual Studio .NET, montrez le code des fichiers Web.config et
fichier Web.config GetConfigMainFolder.aspx dans le dossier principal.
principal et le fichier
Web.config du Indiquez la valeur stockée dans le fichier Web.config.
sous-dossier 3. Montrez le code des fichiers Web.config et GetConfigSubFolder.aspx dans
le dossier SubFolder.
Indiquez que la valeur stockée dans le fichier Web.config est différente.
4. Générez et parcourez la page GetConfigMainFolder.aspx et sélectionnez la
valeur extraite du fichier Web.config.
5. Cliquez sur Suivant pour ouvrir la page GetConfigSubFolder.aspx située
dans le dossier SubFolder et soulignez que la valeur est différente.
Suppression de 6. Dans le dossier SubFolder, attribuez au fichier Web.config le nom
Web.config du oldWeb.config.
sous-dossier et
actualisation du 7. Générez et parcourez la page GetConfigMainFolder.aspx et sélectionnez la
formulaire Web valeur extraite du fichier Web.config.
8. Cliquez sur Suivant pour ouvrir la page GetConfigSubFolder.aspx dans le
dossier SubFolder et montrez que la valeur est identique à celle du fichier
Web.config dans le répertoire principal.
32 Module 15 : Configuration, optimisation et déploiement d'une application Web Microsoft ASP.NET

Application pratique : Détermination de l'héritage de configuration

! Les stagiaires devront :


" Déterminer les paramètres de
configuration d'une application Web
basée sur plusieurs variables
! Durée approximative : 5 minutes

********************Document à l'usage exclusif de l'instructeur********************

Introduction Dans cette application pratique, vous allez examiner un fichier Machine.config
et deux fichiers Web.config pour déterminer les paramètres de configuration du
serveur Web, de l'application Web et du sous-répertoire de l'application Web.
Examinez le code ci-dessous du fichier Machine.config. Ensuite, répondez aux
questions.
<configuration>
<appSettings>
<add key="Nom du fichier XML par défaut"
value="Default.xml" />
<add key="Nom du fichier texte par défaut"
value="Default.txt" />
</appSettings>
<authentication mode="Windows">
<forms name=".ASPXAUTH"
loginUrl="login.aspx"
protection="All"
timeout="30"
path="/">
</forms>
</authentication>
<system.web>
<trace
enabled="false"
localOnly="true"
pageOutput="false"
requestLimit="10"
traceMode="SortByTime"
/>
</system.web>
</configuration>
Module 15 : Configuration, optimisation et déploiement d'une application Web Microsoft ASP.NET 33

À ce niveau, quel est le paramètre de configuration du mécanisme


d'authentification ?
____________________________________________________________

____________________________________________________________

Existe-t-il un paramètre de configuration pour une chaîne de connexion ? Si


tel est le cas, quel est-il ?
____________________________________________________________

____________________________________________________________

Existe-t-il d'autres paramètres de configuration d'application ? Si tel est le


cas, quelles en sont les valeurs ?
____________________________________________________________

____________________________________________________________

Existe-t-il un paramètre de configuration pour activer le traçage de


l'application Web ? Si tel est le cas, le traçage peut-il être effectué à partir
d'un ordinateur externe ?
____________________________________________________________

____________________________________________________________
34 Module 15 : Configuration, optimisation et déploiement d'une application Web Microsoft ASP.NET

Examinez le code ci-dessous d'un fichier Web.config situé dans le répertoire


racine virtuel de l'application Web. Ensuite, répondez aux questions. Tenez
compte de l'exemple de code précédent lorsque vous répondez aux questions.
<configuration>
<appSettings>
<add key="northwind"
value="data source=localhost;
initial catalog=northwind;
integrated security=true;" />
</appSettings>
<system.web>
<trace
enabled="true"
localOnly="true"
pageOutput="false"
requestLimit="30"
traceMode="SortByCategory"
/>
</system.web>
</configuration>

À ce niveau, quel est le mécanisme d'authentification ?


____________________________________________________________

____________________________________________________________

Existe-t-il une chaîne de connexion ? Si tel est le cas, quelle est-elle ?


____________________________________________________________

____________________________________________________________

Existe-t-il d'autres paramètres d'application ? Si tel est le cas, quelles en sont


les valeurs ?
____________________________________________________________

____________________________________________________________

Le traçage est-il activé pour l'application Web ? Si tel est le cas, le traçage
peut-il être effectué à partir d'un ordinateur externe ?
____________________________________________________________

____________________________________________________________
Module 15 : Configuration, optimisation et déploiement d'une application Web Microsoft ASP.NET 35

Examinez le code ci-dessous d'un fichier Web.config situé dans un


sous-répertoire de l'application Web. Ensuite, répondez aux questions. Tenez
compte de l'exemple de code précédent lorsque vous répondez aux questions.
<configuration>
<appSettings>
<add key="Northwind"
value="data source=SQLServ01;
initial catalog=northwind;
integrated security=true;" />
</appSettings>
<authentication mode="Forms">
<forms name=".ASPXAUTH"
loginUrl="loginPage.aspx"
timeout="30"
path="/">

</forms>
</authentication>
<system.web>
<trace
enabled="true"
localOnly="false"
pageOutput="false"
requestLimit="40"
traceMode="SortByTime"
/>
</system.web>
</configuration>

À ce niveau, quel est le mécanisme d'authentification ?


____________________________________________________________

____________________________________________________________

Existe-t-il une chaîne de connexion ? Si tel est le cas, quelle est-elle ?


____________________________________________________________

____________________________________________________________
36 Module 15 : Configuration, optimisation et déploiement d'une application Web Microsoft ASP.NET

Existe-t-il d'autres paramètres d'application ? Si tel est le cas, quelles en sont


les valeurs ?
____________________________________________________________

____________________________________________________________

Le traçage est-il activé pour l'application Web ? Si tel est le cas, le traçage
peut-il être effectué à partir d'un ordinateur externe ?
____________________________________________________________

____________________________________________________________
Module 15 : Configuration, optimisation et déploiement d'une application Web Microsoft ASP.NET 37

Stockage et extraction de données dans le fichier Web.config

! Stockage des paramètres d'application de


Web.config
<configuration>
<configuration>
<appSettings>
<appSettings>
<add
<add key="pubs"
key="pubs" value="server=localhost;
value="server=localhost;
integrated
integrated security=true;
security=true; database=pubs"/>
database=pubs"/>
</appSettings>
</appSettings>
</configuration>
</configuration>

! Extraction des paramètres d'application de


Web.config
Dim
Dim strPubs
strPubs As
As String
String == __
ConfigurationSettings.AppSettings("pubs")
ConfigurationSettings.AppSettings("pubs")

AppSettingsReader
AppSettingsReader App
App == new
new AppSettingsReader();
AppSettingsReader();
string
string strPubs
strPubs == (string)App.GetValue("pubs",
(string)App.GetValue("pubs",
typeof(string));
typeof(string));

********************Document à l'usage exclusif de l'instructeur********************

Introduction La section <appSettings> du fichier Web.config peut être utilisée en tant que
référentiel pour les paramètres de l'application. Vous pouvez y créer des paires
clé/valeur pour les données qui sont utilisées couramment dans l'application
Web. Cette fonctionnalité est très utile, car elle permet de centraliser la
définition de toutes les données de configuration de l'application. Vous pouvez,
par exemple, stocker une chaîne de connexion de base de données pour une
application à un emplacement centralisé, au lieu de la stocker dans chaque page
ASP.NET.
Stockage des Pour stocker les paramètres d'application, entrez une paire clé/valeur pour les
paramètres d'application informations que vous souhaitez stocker. Le fichier Web.config suivant crée
dans Web.config deux paires clé/valeur pour les chaînes de connexion des bases de données
utilisées dans une application Web :
configuration>
<appSettings>
<add key="pubs"
value="data source=localhost;
initial catalog=pubs;
integrated security=SSPI" />
<add key="northwind"
value="data source=localhost;
initial catalog=northwind;
integrated security=SSPI" />
</appSettings>
</configuration>
38 Module 15 : Configuration, optimisation et déploiement d'une application Web Microsoft ASP.NET

Extraction des Pour extraire les paramètres d'application des fichiers Web.config, utilisez la
paramètres d'application collection de chaîne statique ConfigurationSettings.AppSettings.
de Web.config
Ainsi, l'exemple de code suivant lit la valeur de la clé pubs dans la section
<appSettings> :
Visual Basic .NET Dim strPubs As String = _
ConfigurationSettings.AppSettings("pubs")

C# string strPubs = System.Configuration.


ConfigurationSettings.AppSettings["pubs"];
Module 15 : Configuration, optimisation et déploiement d'une application Web Microsoft ASP.NET 39

Utilisation des propriétés dynamiques

! Stockage des valeurs


des propriétés dans
les fichiers
Web.config au lieu du
code compilé de
l'application
! Simplification des
mises à jour sans
recompiler
l'application
! Activation et
configuration via des
propriétés d'objet

********************Document à l'usage exclusif de l'instructeur********************

Introduction Les propriétés dynamiques vous permettent de configurer votre application


pour stocker ses valeurs de propriétés dans un fichier de configuration externe
(Web.config, par exemple) et non dans le code compilé de l'application. Le
stockage dans un fichier de configuration externe peut réduire le coût total de
gestion d'une application, après son déploiement, en offrant aux administrateurs
la possibilité de mettre à jour les valeurs de propriétés qui peuvent changer au
fil du temps.
Stockage des valeurs de Bien que les propriétés de la plupart des composants et des contrôles d'une
propriété dans application Web puissent être gérées dynamiquement, certaines propriétés sont
Web.config mieux adaptées à une gestion dynamique que d'autres. Par exemple, vous
utiliserez des propriétés dynamiques pour stocker et extraire les propriétés
connectées à des ressources externes qui peuvent changer, telles que des bases
de données.
Mise à jour simple Supposons que vous créez une application Web qui utilise une base de données
test lors du développement et que vous devez transférer l'application Web sur
une base de données de production lors de son déploiement. Si vous stockez les
valeurs de propriété dans l'application Web, vous devez modifier manuellement
tous les paramètres de base de données avant de déployer la base de données,
puis vous devez recompiler le code source. Si vous stockez ces valeurs de
propriété en externe, il vous suffit de modifier le fichier externe pour que
l'application Web utilise ces nouvelles valeurs, lors de sa prochaine exécution.
Activation et Dans Visual Studio .NET, la configuration d'un objet pour utiliser des
configuration via des propriétés dynamiques s'effectue dans la fenêtre des propriétés de celui-ci.
propriétés d'objet Activez la case à cocher DynamicProperties dans la section de configuration
de la fenêtre des propriétés, puis attribuez une clé à la propriété dans
Web.config.
40 Module 15 : Configuration, optimisation et déploiement d'une application Web Microsoft ASP.NET

Démonstration : Utilisation des propriétés dynamiques

! Configuration d'un objet


SqlConnection pour utiliser des
propriétés dynamiques
! Affichage du nouveau code généré
dans la page code-behind
! Ouverture du fichier Web.config et
affichage de la clé
SqlConnection1.ConnectionString
dans la section appSettings

********************Document à l'usage exclusif de l'instructeur********************

Introduction Dans cette démonstration, vous allez découvrir comment activer et configurer
un objet SqlConnection pour utiliser des propriétés dynamiques.
Tous les fichiers de cette démonstration figurent dans le projet Mod15VB ou
Mod15CS de la solution 2333Demos.

! Pour exécuter la démonstration


Configuration d'un objet 1. Ouvrez la page DataAccess.aspx du projet Mod15VB ou Mod15 CS dans
SqlConnection pour Visual Studio .NET.
utiliser des propriétés
dynamiques 2. Sélectionnez l'objet SqlConnection et affichez la fenêtre Propriétés.
3. Développez la propriété DynamicProperties.
Notez que la propriété ConnectionString peut être une propriété
dynamique.
4. Sélectionnez la propriété ConnectionString, puis cliquez sur le bouton
« ... ».
5. Dans la boîte de dialogue Propriété dynamique, rendez la propriété
dynamique avec un nom de clé par défaut en sélectionnant Mapper la
propriété à une clé dans le fichier de configuration, puis cliquez sur OK.
6. Dans la fenêtre des propriétés, notez la présence d'un glyphe bleu en regard
de la propriété <original> ConnectionString de l'objet SqlConnection. Ce
glyphe indique qu'il s'agit d'une propriété dynamique.
Module 15 : Configuration, optimisation et déploiement d'une application Web Microsoft ASP.NET 41

Affichage du nouveau 7. Affichez le nouveau code généré dans la page code-behind et recherchez la
code généré ligne de code qui définit la propriété ConnectionString de l'objet
SqlConnection :
Visual Basic .NET Me.SqlConnection1.ConnectionString = _
CType(configurationAppSettings.GetValue _
("SqlConnection1.ConnectionString", _
GetType(System.String)), String)

C# this.SqlConnection1.ConnectionString =
((string)(configurationAppSettings.GetValue("SqlConnection1
.ConnectionString", typeof(string))));

Affichage de la clé 8. Ouvrez le fichier Web.config et recherchez la clé


SqlConnection1. SqlConnection1.ConnectionString dans la section appSettings.
ConnectionString
42 Module 15 : Configuration, optimisation et déploiement d'une application Web Microsoft ASP.NET

Leçon : Déploiement d'une application Web ASP.NET

! Déploiement d'une application Web


! Préparation d'une application Web en vue du
déploiement
! Application pratique : Sélection des fichiers
nécessaires
! Partage d'assemblys dans le cache de l'assembly
global
! Mise à jour de votre application Web

********************Document à l'usage exclusif de l'instructeur********************

Introduction Après avoir défini des objets Cache ainsi que le cache de sortie et organisé les
paramètres de l'application Web entre les fichiers Machine.config et
Web.config, vous pouvez déployer votre application Web ASP.NET.
Dans cette leçon, vous apprendrez à sélectionner les fichiers requis pour
exécuter l'application Web, puis à utiliser XCOPY ou le protocole FTP (File
Transfer Protocol) pour les copier dans le répertoire de production.
Objectifs de la leçon À la fin de cette leçon, vous serez à même d'effectuer les tâches suivantes :
! expliquer les méthodes de déploiement d'une application Web ;
! préparer le déploiement de l'application Web en sélectionnant uniquement
les fichiers nécessaires à l'exécution de l'application Web ;
! partager des assemblys dans le cache de l'assembly global (GAC, Global
Assembly Cache).
! mettre à jour une application Web ASP.NET.
Module 15 : Configuration, optimisation et déploiement d'une application Web Microsoft ASP.NET 43

Déploiement d'une application Web

! Copie locale des fichiers ou copie à distance des


fichiers FTP
! Configuration du dossier cible en tant que
répertoire virtuel dans les services IIS (Internet
Information Services)
! Copie de tous les fichiers nécessaires, y compris
le répertoire \bin et son contenu
" Aucun besoin d'enregistrer les composants

********************Document à l'usage exclusif de l'instructeur********************

Introduction Pour déployer une application Web ASP.NET vers un répertoire ou un serveur
de production, vous devez copier tous les fichiers nécessaires à l'emplacement
adéquat. Cette copie s'effectue généralement à l'aide de l'Explorateur Windows
pour les copies locales ou de FTP pour les déploiements distants. Ce type de
copie est souvent appelé déploiement XCOPY, en raison du nom de l'utilitaire
XCOPY de Microsoft MS-DOS® qui permet de copier tous les fichiers et
dossiers d'un répertoire.
Configuration du Avant de pouvoir déployer une application Web vers un répertoire de
dossier cible en tant que production, le dossier vers lequel est déployée l'application Web doit être
répertoire virtuel dans configuré en tant que répertoire virtuel dans les services IIS (Internet
les services IIS Information Services).

! Pour configurer un dossier en tant que répertoire virtuel dans les


services IIS
1. Dans le menu Démarrer, cliquez avec le bouton droit sur Poste de travail,
puis sur Gérer.
2. Développez Services et applications, puis Services Internet (IIS).
3. Dans le panneau de gauche de la console IIS, naviguez jusqu'au dossier que
vous souhaitez transformer en répertoire d'application Web.
4. Cliquez avec le bouton droit sur le dossier, puis cliquez sur Propriétés.
5. Dans l'onglet Répertoire, dans la section Paramètres d'application,
cliquez sur Créer.
6. Cliquez sur OK.
44 Module 15 : Configuration, optimisation et déploiement d'une application Web Microsoft ASP.NET

Copie de tous les Seuls les sous-ensembles de fichiers nécessaires à la création d'une application
fichiers nécessaires Web doivent exécuter celle-ci dans le répertoire de production. Avant de copier
l'application Web, vous devez la générer, puis supprimer tous les fichiers
inutiles.
Dans la mesure où les applications du Common Language Runtime sont
auto-descriptives et ne nécessitent pas d'entrées de registre, vous ne devez pas
enregistrer de composants avant ou après la copie de fichiers. L'application
Web peut accepter des demandes après avoir été copiée dans un dossier
configuré en tant que répertoire d'application Web dans les services IIS.
Module 15 : Configuration, optimisation et déploiement d'une application Web Microsoft ASP.NET 45

Préparation d'une application Web en vue du déploiement

1. Génération de l'application Web


2. Non-sélection des fichiers inutiles
" Fichiers de solution Visual Studio .NET (.vbproj,
.vbproj.webinfo, .csproj, .csproj.webinfo, etc.)
" Fichiers ressource (.resx)
" Pages code-behind (.vb, .cs)
3. Copie ou transfert via FTP des fichiers
nécessaires au répertoire de production

********************Document à l'usage exclusif de l'instructeur********************

Introduction Le déplacement de votre application Web de l'environnement de


développement vers un répertoire ou un serveur de production implique trois
étapes :
1. génération de l'application Web ;
2. suppression de tous les fichiers inutiles de l'application Web ;
3. copie des fichiers dans l'environnement de production.
Génération de La première étape consiste à générer, ou compiler, votre application Web. Cette
l'application compilation crée un fichier DLL (Dynamic-Link Library) dans le répertoire \bin
qui contient tout le code de l'application Web. Un fichier NomApplication.dll
est créé pour chaque application Web ; ce fichier contient le code de tous les
fichiers de ressources et code-behind.
Non-sélection des La seconde étape du déploiement d'une application Web consiste à sélectionner
fichiers inutiles uniquement les fichiers nécessaires dans le répertoire qui contient l'application
Web. Vous augmentez ainsi la sécurité de votre environnement de production
en limitant l'exposition du code non compilé.
46 Module 15 : Configuration, optimisation et déploiement d'une application Web Microsoft ASP.NET

Les fichiers qui ne sont pas nécessaires dans le répertoire de production sont les
suivants :
! Fichiers de solution Visual Studio .NET (.vbproj, .vbproj.webinfo, .csproj,
etc.)
Ces fichiers sont uniquement requis par Visual Studio .NET pour
développer l'application Web et ne sont pas nécessaires pour exécuter
l'application Web dans un environnement de production.
! Fichiers ressource (.resx)
Ces fichiers sont compilés dans le fichier DLL.
! Pages code-behind (.vb, .cs)
Ces fichiers sont compilés dans le fichier DLL.

Remarque Si vous utilisez la compilation dynamique, vous devez copier


les pages code-behind dans votre application Web. La compilation
dynamique est activée à l'aide de l'attribut src dans la directive @ Page.

Fichiers requis Les fichiers qui sont nécessaires sur le serveur de production sont les suivants :
! Le répertoire \bin et les fichiers DLL qu'il contient.
Il s'agit des fichiers de ressources et des pages code-behind compilés.
! Tous les fichiers de formulaire Web, de contrôle utilisateur et de service
Web XML (.aspx, .ascx, .asmx).
Il s'agit des fichiers d'interface utilisateur et d'application.
! Les fichiers de configuration, notamment Web.config et global.asax.
Si vous avez modifié les paramètres de configuration dans le fichier
Machine.config de l'ordinateur de développement, vous devez apporter les
mêmes modifications au fichier Machine.config du serveur de production.
! Tout fichier de prise en charge supplémentaire présent dans le répertoire (les
fichiers XML, par exemple).
Copie ou transfert de Après avoir compilé l'application Web et supprimé tous les fichiers non requis,
fichiers via FTP il suffit de copier, ou de transférer via FTP, tous les fichiers restants de
l'application Web du répertoire de développement vers le répertoire de
production.
Module 15 : Configuration, optimisation et déploiement d'une application Web Microsoft ASP.NET 47

Application pratique : Sélection des fichiers nécessaires

! Les stagiaires devront :


" Sélectionner les fichiers nécessaires à
un déploiement
! Durée approximative : 5 minutes

********************Document à l'usage exclusif de l'instructeur********************

Dans cette application pratique, vous allez sélectionner les fichiers que vous
devez copier dans le répertoire de production.
Fichier Fichier
Visual Basic .NET Microsoft Visual C#™ Conserver Supprimer
.vbproj .csproj
.vbproj.webinfo .csproj.webinfo
.resx .resx
.dll .dll
.aspx .aspx
répertoire \bin et son répertoire \bin et son
contenu contenu
.aspx.vb .aspx.cs
.csproj .vbproj
Global.asax Global.asax
.exe .exe
.ascx .ascx
.xml .xml
Web.config Web.config
48 Module 15 : Configuration, optimisation et déploiement d'une application Web Microsoft ASP.NET

Partage d'assemblys dans le cache de l'assembly global

! Le cache de l'assembly global assure le stockage


des assemblys à partager
" Cache pour le code, à l'échelle de l'ordinateur
" Étant donné que les fichiers de DLL ne sont pas
enregistrés, ils ne sont pas facilement partagés
entre les applications Web

********************Document à l'usage exclusif de l'instructeur********************

Introduction Chaque ordinateur sur lequel est installé le Common Language Runtime
dispose également d'un cache pour le code de l'ordinateur, appelé cache de
l'assembly global. Après avoir déployé votre application Web sur un serveur
Web de production, vous pouvez utiliser ce cache pour partager du code entre
les applications Web sur le serveur Web.
Stockage des assemblys Bien que l'objet Cache d'ASP.NET soit utilisé pour le stockage à court terme
à partager d'informations dans une application Web, le cache de l'assembly global peut
être utilisé pour partager du code sur l'ensemble du serveur Web. Le cache de
l'assembly global stocke des assemblys qui ont été conçus pour être partagés par
plusieurs applications Web sur un serveur. Un assembly est un ensemble de
ressources regroupées dans un seul fichier (un fichier dll, par exemple).
Les raisons pour lesquelles vous devez installer un assembly dans le cache de
l'assembly global sont les suivantes :
! Emplacement partagé
Les assemblys utilisés par plusieurs applications peuvent être placés dans le
cache de l'assembly global.
! Sécurité de fichier
Le cache de l'assembly global est installé dans le répertoire WINNT, dont le
contenu est généralement protégé par des restrictions d'accès.
! Versioning côte à côte
Vous pouvez gérer, dans le cache de l'assembly global, plusieurs copies
d'assemblys qui portent le même nom mais dont les informations de version
sont différentes.
Module 15 : Configuration, optimisation et déploiement d'une application Web Microsoft ASP.NET 49

Mise à jour de votre application Web

! Copie des fichiers ou transfert via FTP pour


mettre à jour l'application Web
" Inutile d'arrêter et de redémarrer IIS
" Les fichiers .dll peuvent être mis à jour pendant
que le site est actif
! Le cache de sortie protège les utilisateurs
existants

********************Document à l'usage exclusif de l'instructeur********************

Introduction Lorsque votre application Web est exécutée dans un répertoire de production,
vous pouvez la mettre à jour à tout moment sans redémarrer le serveur, les
services IIS ou l'application Web.
Copie ou transfert de Lorsqu'une nouvelle version de l'application Web est disponible, ASP.NET
fichiers via FTP vous permet de copier uniquement les nouveaux fichiers dans le répertoire et de
remplacer les fichiers existants. Lorsque l'utilisateur suivant se connecte à votre
application Web, il reçoit les fichiers les plus récents. Contrairement aux
versions précédentes d'ASP (Active Server Pages), la mise à jour d'un site Web
ASP.NET ne nécessite pas l'arrêt ou le redémarrage des services IIS.
Le cache de sortie Si vous activez la mise en cache de sortie de page pour les formulaires Web, les
protège les utilisateurs utilisateurs continuent à recevoir les anciennes versions des pages jusqu'à
existants l'expiration du cache. Après l'expiration des pages mises en cache, les
utilisateurs reçoivent une version mise à jour de la page.
50 Module 15 : Configuration, optimisation et déploiement d'une application Web Microsoft ASP.NET

Contrôle des acquis

! Utilisation de l'objet Cache


! Utilisation du cache de sortie d'ASP.NET
! Configuration d'une application Web ASP.NET
! Déploiement d'une application Web ASP.NET

********************Document à l'usage exclusif de l'instructeur********************

1. Quelle est la différence entre l'objet Cache et la mise en cache de sortie de


page ?

2. Quel type de mise en cache utiliseriez-vous pour placer un DataSet en


cache ?

3. Quels fichiers pouvez-vous utiliser pour configurer une application Web


ASP.NET ?
Module 15 : Configuration, optimisation et déploiement d'une application Web Microsoft ASP.NET 51

4. Quelles sont les trois étapes nécessaires au déploiement d'une application


Web ASP.NET ?

5. Quel est le rôle du cache de l'assembly global ?

6. Pour quelle raison pouvez-vous supprimer les pages code-behind (.aspx.vb


et .aspx.cs) lors du déploiement d'une application Web ?

7. Pour quelle raison utiliseriez-vous des propriétés dynamiques pour stocker


l'URL pointant vers un service Web XML dans Web.config ?
52 Module 15 : Configuration, optimisation et déploiement d'une application Web Microsoft ASP.NET

Atelier 15 : Configuration, optimisation et déploiement


d'une application Web Microsoft ASP.NET
Page
Page de
de
connexion
connexion
Login.aspx
Login.aspx Page
Page
d'accueil
d'accueil En-tête
En-tête
Coho
Winery
Avantages
Avantages de
de page
page ASPState
Default.aspx
Default.aspx Header.ascx
Header.ascx
Composant
Composant
Inscription
Inscription du
du menu
menu
Register.aspx
Register.aspx Class1.vb
Class1.vbou
ou Class1.cs
Class1.cs Web.
config tempdb

Assurance Plans
Plans Assurance
Assurance Soins
Soins
Assurance vie
vie de
de retraite
retraite maladie
maladie dentaires
dentaires
Life.aspx
Life.aspx
Retirement.aspx
Retirement.aspx Medical.aspx
Medical.aspx Dental.aspx
Dental.aspx

Prospectus Médecins Contrôle


Contrôle Service
Service Web
Web
Prospectus Médecins utilisateur
utilisateur XML
Application Prospectus.aspx
Prospectus.aspx Doctors.aspx
Doctors.aspx
namedate.ascx
namedate.ascx
XML
Web de dentalService1.asmx
dentalService1.asmx
l’atelier

Fichiers
XML Doctors Dentists

********************Document à l'usage exclusif de l'instructeur********************

Objectifs À la fin de cet atelier, vous serez à même d'effectuer les tâches suivantes :
! utiliser l'objet Cache pour mettre en cache un DataSet ;
! utiliser les propriétés dynamiques ;
! utiliser la mise en cache de sortie de page pour mettre en cache un
formulaire Web et un contrôle utilisateur ;
! utiliser la propriété VaryByParam pour manipuler la mise en cache de
page ;
! déployer une application Web Microsoft® ASP.NET sur un serveur distant.

Remarque Cet atelier étant axé sur les concepts de ce module, il ne respecte
pas les recommandations Microsoft relatives à la sécurité.

Conditions préalables Pour aborder cet atelier, vous devez disposer de connaissances élémentaires
dans les domaines suivants :
! Utilisation de l'objet Cache
! Fonctionnement de la mise en cache de sortie de page
! Utilisation des services IIS (Internet Information Services)
Module 15 : Configuration, optimisation et déploiement d'une application Web Microsoft ASP.NET 53

Scénario Coho Winery offre de nombreux avantages à ses employés. Dans les ateliers du
cours 2333A, Développement d'applications Web Microsoft ASP.NET à l'aide
de Visual Studio .NET, vous créerez un site Web qui permettra aux employés de
sélectionner et de définir les avantages qu'ils auront choisis.
Dans cet atelier, vous effectuerez les tâches suivantes :
! utiliser l'objet Cache pour mettre en cache un DataSet ;
! utiliser la mise en cache de sortie pour mettre en cache un formulaire Web
et un contrôle utilisateur ;
! utiliser les propriétés dynamiques pour stocker l'URL (Uniform Resource
Locator) d'un service Web XML ;
! déployer le site Web ApplicationAtelier2333 vers un serveur distant.
Durée approximative de
cet atelier :
90 minutes
54 Module 15 : Configuration, optimisation et déploiement d'une application Web Microsoft ASP.NET

Exercice 0
Mise en place de l'atelier
Pour réaliser cet atelier, vous devez avoir créé un projet d'application Web
intitulé Benefits et un projet de bibliothèque de classes intitulé BenefitsList. Ces
projets peuvent être créés à l'aide de Microsoft Visual Basic® .NET ou de
Microsoft Visual C#™ .NET.
Si vous n'avez pas créé ces projets, procédez comme suit :

! Création de la solution ApplicationAtelier2333


Important Effectuez uniquement cette procédure si vous n'avez pas encore créé
le fichier de solution ApplicationAtelier2333.

• À l'aide de Microsoft Visual Studio .NET, créez une solution nommée


ApplicationAtelier2333 :
a. Dans le menu Fichier, pointez sur Nouveau, puis cliquez sur Nouvelle
solution.
b. Dans la boîte de dialogue Nouveau projet, tapez
ApplicationAtelier2333 dans la zone de texte Nom, puis cliquez sur
OK.

! Création du projet Benefits


Important Effectuez uniquement cette procédure si vous n'avez pas encore créé
le projet Benefits ou si vous avez supprimé ce projet conformément aux
instructions de l'annexe A, « Récupération d'un atelier » du cours 2333A,
Développement d'applications Web Microsoft ASP.NET à l'aide de Visual
Studio .NET.

• Créez un projet d'application Web ASP.NET, appelé BenefitsVB ou


BenefitsCS dans la solution ApplicationAtelier2333 :
a. Dans le menu Fichier, pointez sur Nouveau, puis cliquez sur Projet.
b. Dans la boîte de dialogue Nouveau projet, cliquez sur Projets
Visual Basic ou Projets Visual C# dans la liste Types de projets.
c. Dans la liste Modèles, cliquez sur Application Web ASP.NET.
Définissez l'Emplacement à http://localhost/BenefitsVB pour le projet
Visual Basic .NET ou à http:/localhost/BenefitsCS pour le projet
Visual C# .NET.
d. Cliquez sur Ajouter à la solution, puis sur OK.

Attention Lorsque vous ajoutez un projet à une solution, il est important de


respecter les majuscules. Il se peut que vous utilisiez certains formulaires
Web prédéfinis dans cet atelier ou dans d'autres ateliers du cours 2333A,
Développement d'applications Web Microsoft ASP.NET à l'aide de Visual
Studio .NET. Par conséquent, vérifiez que le projet Benefits est orthographié
avec des majuscules, comme indiqué.
Module 15 : Configuration, optimisation et déploiement d'une application Web Microsoft ASP.NET 55

! Mise à jour du projet Benefits


1. Dans Visual Studio .NET, ouvrez le fichier de solution
ApplicationAtelier2333.
2. Dans l'Explorateur de solutions, cliquez avec le bouton droit sur
BenefitsVB ou BenefitsCS, pointez sur Ajouter et cliquez sur Ajouter un
élément existant.
3. Accédez aux fichiers du projet :
Pour le projet Visual Accédez au dossier
Basic .NET dossier_installation\Labfiles\Lab15\VB\Starter\BenefitsVB.
Pour le projet Visual C# Accédez au dossier
dossier_installation\Labfiles\Lab15\CS\Starter\BenefitsCS.
4. Dans la zone Type de fichiers de la boîte de dialogue Ajouter un élément
existant - Benefits, cliquez sur Tous les fichiers (*.*).
5. Sélectionnez tous les fichiers de ce dossier, puis cliquez sur Ouvrir.
6. Cliquez sur Oui si vous êtes invité à remplacer ou recharger les fichiers.

! Création de la bibliothèque de classes BenefitsList


Important Effectuez uniquement cette procédure si vous n'avez pas encore créé
le projet BenefitsList ou si vous avez supprimé ce projet conformément aux
instructions de l'annexe A, « Récupération d'un atelier » du cours 2333A,
Développement d'applications Web Microsoft ASP.NET à l'aide de Visual
Studio .NET.

• Créez un projet de bibliothèque de classes.


Pour le projet Visual Créez un projet de bibliothèque de classes Visual Basic .NET, nommé
Basic .NET BenefitsListVB, et ajoutez-le à la solution ApplicationAtelier2333 :
a. Dans le menu Fichier, pointez sur Nouveau, puis cliquez sur Projet.
b. Dans la boîte de dialogue Nouveau projet, cliquez sur Projets
Visual Basic dans la liste Types de projets.
c. Dans la liste Modèles, cliquez sur Bibliothèque de classes, puis
attribuez le nom BenefitsListVB.
d. Cliquez sur Ajouter à la solution, puis sur OK.
Pour le projet Visual C# Créez un projet de bibliothèque de classes Visual C# .NET, nommé
BenefitsListCS, et ajoutez-le à la solution ApplicationAtelier2333 :
a. Dans le menu Fichier, pointez sur Nouveau, puis cliquez sur Projet.
b. Dans la boîte de dialogue Nouveau projet, cliquez sur Projets
Visual C# dans la liste Types de projets.
c. Dans la liste Modèles, cliquez sur Bibliothèque de classes, puis
attribuez le nom BenefitsListCS.
d. Cliquez sur Ajouter à la solution, puis sur OK.

Attention Vérifiez que le projet BenefitsList est orthographié avec des


majuscules, comme indiqué.
56 Module 15 : Configuration, optimisation et déploiement d'une application Web Microsoft ASP.NET

! Mise à jour du projet BenefitsList


1. Dans Visual Studio .NET, ouvrez le fichier de solution
ApplicationAtelier2333.
2. Dans l'Explorateur de solutions, cliquez avec le bouton droit sur
BenefitsListVB ou BenefitsListCS, pointez sur Ajouter, puis cliquez sur
Ajouter un élément existant.
3. Accédez aux fichiers du projet :
Pour le projet Visual Accédez au dossier
Basic .NET dossier_installation\Labfiles\Lab15\VB\Starter\BenefitsListVB.
Pour le projet Visual C# Accédez au dossier
dossier_installation\Labfiles\Lab15\CS\Starter\BenefitsListCS.
4. Dans la zone Type de fichiers de la boîte de dialogue Ajouter un élément
existant - BenefitsList, cliquez sur Tous les fichiers (*.*).
5. Sélectionnez tous les fichiers de ce dossier, puis cliquez sur Ouvrir.
6. Cliquez sur Oui si vous êtes invité à remplacer ou recharger les fichiers.

! Création d'une référence au composant BenefitsList dans le projet


Benefits
• Dans le projet Benefits de la solution ApplicationAtelier2333, effectuez les
étapes suivantes pour ajouter une référence au composant BenefitsList que
vous venez de créer :
a. Cliquez avec le bouton droit sur le projet BenefitsVB ou BenefitsCS
dans l'Explorateur de solutions, puis cliquez sur Ajouter une référence.
b. Dans la boîte de dialogue Ajouter une référence, sous l'onglet Projets,
double-cliquez sur le projet BenefitsListVB ou BenefitsListCS.
c. Dans la liste Composants sélectionnés, sélectionnez le composant
BenefitsListVB ou BenefitsListCS, puis cliquez sur OK.
Le composant est ajouté dans le dossier References dans l'Explorateur de
solutions.
Module 15 : Configuration, optimisation et déploiement d'une application Web Microsoft ASP.NET 57

! Création du service Web XML DentalService


Important Effectuez uniquement cette procédure si vous n'avez pas encore créé
le projet DentalService ou si vous avez supprimé ce projet conformément aux
instructions de l'annexe A, « Récupération d'un atelier » du cours 2333A,
Développement d'applications Web Microsoft ASP.NET à l'aide de Visual
Studio .NET.

• Créez un projet de service Web XML, nommé DentalServiceVB ou


DentalServiceCS et ajoutez-le à la solution ApplicationAtelier2333 :
a. Dans le menu Fichier, pointez sur Nouveau, puis cliquez sur Projet.
b. Dans la boîte de dialogue Nouveau projet, cliquez sur Projets
Visual Basic dans la liste Types de projets.
c. Dans la liste Modèles, cliquez sur Service Web ASP.NET et définissez
l'Emplacement à http://localhost/DentalServiceVB ou à
http://localhost/DentalServiceCS
d. Cliquez sur Ajouter à la solution, puis sur OK.

Attention Vérifiez que le projet DentalService est orthographié avec des


majuscules, comme indiqué.

! Mise à jour du projet DentalService


1. Dans Visual Studio .NET, ouvrez le fichier de solution
ApplicationAtelier2333.
2. Dans l'Explorateur de solutions, cliquez avec le bouton droit sur
DentalServiceVB ou DentalServiceCS, pointez sur Ajouter, puis cliquez
sur Ajouter un élément existant.
3. Accédez au répertoire DentalService :
Visual Basic .NET Accédez au dossier
dossier_installation\Labfiles\Lab15\VB\Starter\DentalServiceVB.
Visual C# Accédez au dossier
dossier_installation\Labfiles\Lab15\CS\Starter\DentalServiceCS.
4. Ajoutez les fichiers au projet.
Visual Basic .NET Dans la zone Type de fichiers de la boîte de dialogue Ajouter un élément
existant - DentalServiceVB, cliquez sur Tous les fichiers (*.*).
Visual C# Dans la zone Type de fichiers de la boîte de dialogue Ajouter un élément
existant - DentalServiceCS, cliquez sur Tous les fichiers (*.*).
5. Sélectionnez tous les fichiers de ce dossier, puis cliquez sur Ouvrir.
6. Cliquez sur Oui si vous êtes invité à remplacer ou recharger les fichiers.
7. Pour générer le service Web XML DentalService, cliquez avec le bouton
droit sur le projet DentalService dans l'Explorateur de solutions, puis
cliquez sur Générer.
58 Module 15 : Configuration, optimisation et déploiement d'une application Web Microsoft ASP.NET

! Ajout d'une référence Web au service Web DentalService dans le projet


Benefits
1. Dans le projet Benefits de la solution ApplicationAtelier2333, effectuez les
étapes suivantes pour ajouter une référence Web au service Web XML
DentalService :
a. Dans l'Explorateur de solutions, cliquez avec le bouton droit sur
BenefitsVB ou BenefitsCS, puis cliquez sur Ajouter une référence
Web.
b. Dans la zone de texte Adresse, tapez :
Visual Basic .NET http://localhost/DentalServiceVB/DentalService.asmx
Visual C# http://localhost/DentalServiceCS/DentalService.asmx
et appuyez sur ENTRÉE.
La référence Web DentalService est affichée.
c. Cliquez sur Ajouter une référence.
La référence Web est ajoutée au projet dans le dossier Web References.
2. Dans l'Explorateur de solutions, développez Web References, cliquez avec
le bouton droit sur localhost, puis sélectionnez Renommer.
3. Tapez DentalWebRef et appuyez sur ENTRÉE.
4. Générez la solution en cliquant sur Générer la solution dans le menu
Générer.

! Installation et configuration des bases de données d'état de session


1. Dans le menu Démarrer, pointez sur Tous les programmes, sur
Accessoires, puis cliquez sur Invite de commandes.
Une fenêtre de commandes s'ouvre.
2. À l'invite de commandes, tapez la commande suivante, où version
représente la dernière version de Microsoft .NET Framework installée sur
votre ordinateur, puis appuyez sur ENTRÉE :
cd\WINDOWS\Microsoft.NET\Framework\version\

L'invite de commandes accède à ce répertoire.


3. À l'invite de commandes, tapez la commande suivante, puis appuyez sur
ENTRÉE :
OSQL -S localhost -E <InstallSqlState.sql

La fenêtre de commandes affiche plusieurs chiffres et messages, puis revient


à l'invite de commandes. Les bases de données ASPState et tempdb ont été
restaurées.
4. Fermez l'invite de commandes, puis ouvrez l'Explorateur Windows.
Module 15 : Configuration, optimisation et déploiement d'une application Web Microsoft ASP.NET 59

5. Accédez au répertoire suivant :


Visual Basic .NET dossier_installation\LabFiles\Lab15\VB\Starter
Visual C# dossier_installation\LabFiles\Lab15\CS\Starter
6. Double-cliquez sur Lab15.bat.
Ce fichier de commande exécute une requête SQL qui configure la sécurité
des bases de données ASPState et tempdb.
7. Fermez l'Explorateur Windows.
60 Module 15 : Configuration, optimisation et déploiement d'une application Web Microsoft ASP.NET

Exercice 1
Utilisation de l'objet Cache
Dans cet exercice, vous allez utiliser l'objet Cache pour mettre en cache l'objet
DataSet intitulé doctors (médecins). L'insertion d'un DataSet dans le cache
réduit le nombre de connexions d'un formulaire Web à la source de données
(Microsoft SQL Server™, dans ce cas) pour remplir le DataGrid.
Dans la mesure où le DataGrid utilise des DataView qui reposent sur le nom
de la ville sélectionnée dans la zone de liste, la mise en cache sera implémentée
dans la procédure d'événement Page_Load et dans la procédure d'événement
SelectedIndexCached de la zone de liste.
Le DataGrid implémente également la pagination. Pour réduire la quantité de
code ajouté au cours de cet atelier, désactivez cette fonctionnalité du DataGrid.

! Désactivation de la pagination
1. Ouvrez le fichier doctors.aspx.
2. Cliquez avec le bouton droit sur l'objet DataGrid intitulé dgDoctors, puis
sélectionnez Générateur de propriétés.
3. Sélectionnez l'onglet Pagination et désactivez la case à cocher Autoriser la
pagination.
La pagination du DataGrid est désactivée. Toutes les données retournées de
la source de données s'affichent.
4. Cliquez sur OK.

! Mise en cache du DataSet dans la procédure d'événement Page_Load


1. Ouvrez le fichier doctors.aspx.vb ou doctors.aspx.cs.
2. Dans la procédure d'événement Page_Load de doctors.aspx, recherchez la
ligne de code suivante :
Visual Basic .NET If Not Page.IsPostBack Then

C# if (!Page.IsPostBack)

3. Ajoutez du code juste avant cette ligne pour vérifier la présence d'une clé
intitulée doctors dans le cache. Ce code vérifie si la clé est vide ou n'existe
pas.
Module 15 : Configuration, optimisation et déploiement d'une application Web Microsoft ASP.NET 61

4. Si la clé de cache doctors est vide ou n'existe pas, remplissez l'objet


DataSet intitulé dsDoctors1 à l'aide de l'objet DataAdapter appelé
sqlDataAdapter1, puis insérez une nouvelle clé doctors dans le cache
contenant le nouveau DataSet. Utilisez les informations du tableau
ci-dessous pour écrire votre code.
Valeur Visual
Propriété Basic .NET C#
Nom de clé doctors doctors
Valeur DsDoctors1 dsDoctors1
Dépendances Nothing null
Expiration absolue 4 minutes 4 minutes
Expiration décalée Nothing Caching.Cache.NoSlidingExpiration

Votre code doit ressembler à ce qui suit :


Visual Basic .NET If (Cache("doctors") Is Nothing) Then
SqlDataAdapter1.Fill(DsDoctors1)
Cache.Insert("doctors", DsDoctors1, Nothing, _
DateTime.Now.AddMinutes(4), Nothing)
End If

C# if (Cache["doctors"] == null)
{
sqlDataAdapter1.Fill(dsDoctors1);
Cache.Insert("doctors", dsDoctors1, null,
DateTime.Now.AddMinutes(4),
System.Web.Caching.Cache.NoSlidingExpiration);
}

5. Dans la procédure d'événement Page_Load, recherchez le commentaire


suivant :
TODO Atelier 9 : lier le datagrid à la table doctors

Sous le commentaire, supprimez ou transformez la ligne de code suivante en


commentaire :
Visual Basic .NET SqlDataAdapter1.Fill(DsDoctors1)

C# sqlDataAdapter1.Fill(dsDoctors1);

6. Dans la procédure d'événement Page_Load, recherchez la ligne de code


suivante :
Visual Basic .NET dgDoctors.DataSource = DsDoctors1

C# dgDoctors.DataSource = dsDoctors1;

7. Définissez la propriété DataSource de dgDoctors au DataSet mis en cache.


Votre code doit ressembler à ce qui suit :
Visual Basic .NET dgDoctors.DataSource = Cache("doctors")

C# dgDoctors.DataSource = Cache["doctors"];
62 Module 15 : Configuration, optimisation et déploiement d'une application Web Microsoft ASP.NET

! Mise en cache du DataSet dans la procédure d'événement


lstCities_SelectedIndexChanged
1. Dans la procédure d'événement lstCities_SelectedIndexChanged de
doctors.aspx, recherchez la ligne de code suivante :
Visual Basic .NET SqlDataAdapter1.Fill(DsDoctors1)

C# sqlDataAdapter1.Fill(DsDoctors1);

2. Supprimez cette ligne de code et remplacez-la par le même code que celui
ajouté à la procédure d'événement Page_Load. Ce code vérifie la présence
de la clé de cache doctors et crée une nouvelle clé si la clé doctors n'existe
pas ou est vide.
3. Dans le code restant de la procédure d'événement
lstCities_SelectedIndexChanged, remplacez les occurrences de
dsDoctors1 par la clé de cache doctors et convertissez-la en un type
DataSet.
Une fois terminée, la procédure d'événement
lstCities_SelectedIndexChanged complète doit ressembler à ce qui suit :
Visual Basic .NET Dim strCity As String = _
Trim(lstCities.SelectedItem.Value)

If (Cache("doctors") Is Nothing) Then


SqlDataAdapter1.Fill(DsDoctors1)
Cache.Insert("doctors", DsDoctors1, Nothing, _
DateTime.Now.AddMinutes(4), Nothing)
End If

If strCity = "[Toutes]" Then


dgDoctors.DataSource = Cache("doctors")
Else
Dim dvDocs As New DataView(CType(Cache("doctors"), _
DataSet).Tables(0))
dvDocs.RowFilter = "city = '" & strCity & "'"
dgDoctors.DataSource = dvDocs
End If
reset()
dgDoctors.DataBind()
Module 15 : Configuration, optimisation et déploiement d'une application Web Microsoft ASP.NET 63

C# string strCity = (lstCities.SelectedItem.Text).Trim();


if (Cache["doctors"] == null)
{
sqlDataAdapter1.Fill(dsDoctors1);
Cache.Insert("doctors",dsDoctors1, null,
DateTime.Now.AddMinutes(4),
System.Web.Caching.Cache.NoSlidingExpiration);
}

if (strCity == "[Toutes]")
dgDoctors.DataSource = Cache["doctors"];
else
{
DataView dvDocs = new
DataView(((DataSet)Cache["doctors"]).Tables[0]);
dvDocs.RowFilter = "city = '" + strCity + "'";
dgDoctors.DataSource = dvDocs;
}
reset();
dgDoctors.DataBind();

Remarque Lorsque vous utilisez une clé de cache avec un objet DataView,
vous devez effectuer une conversion de type de données explicite car Option
Strict est activé pour le projet Benefits.

! Vérification de la page
1. Enregistrez doctors.aspx.vb ou doctors.aspx.cs, puis générez et parcourez la
page.
Si vous recevez une erreur d'autorisation SQL lorsque vous essayez
d'accéder au site Web Benefits, fermez Internet Explorer, ouvrez
l'Explorateur Windows, accédez à dossier_installation\LabFiles\Lab15\VB\
Starter ou dossier_installation\LabFiles\Lab15\CS\Starter et double-cliquez
sur Lab15.bat.
2. Vérifiez la zone de liste déroulante ou les noms de ville en sélectionnant des
noms de ville distincts.
64 Module 15 : Configuration, optimisation et déploiement d'une application Web Microsoft ASP.NET

! S'il vous reste du temps


1. Ajoutez une ligne à l'objet DataTable intitulé doctors de l'objet DataBase
nommé doctors à l'aide de SQL Server Enterprise Manager. Vous devez
inclure une valeur dans les colonnes dr_id, dr_fname et dr_lname.
2. Actualisez doctors.aspx dans le navigateur.
Notez que le nouvel élément n'apparaît pas dans le DataGrid.
3. Sélectionnez une ville dans la zone de liste déroulante, puis sélectionnez
Toutes.
Notez que le nouvel élément n'apparaît toujours pas dans le DataGrid.
4. Patientez pendant 4 minutes, puis recommencez l'étape 3.
Notez que la nouvelle ligne apparaît désormais dans le DataGrid.
5. Dans SQL Server Enterprise Manager, supprimez la ligne que vous venez
d'ajouter.
Notez que l'élément supprimé apparaît toujours dans le DataGrid. Patientez
pendant 4 minutes, puis actualisez la page. L'élément supprimé n'apparaît
plus.
Module 15 : Configuration, optimisation et déploiement d'une application Web Microsoft ASP.NET 65

Exercice 2
Utilisation du cache de sortie de page
Dans cet exercice, vous allez mettre en cache un formulaire Web à l'aide de la
directive OutputCache. Vous modifierez également l'attribut VaryByParam.
Scénario La page medical.aspx affiche le nom de l'utilisateur, sa date de naissance et le
médecin qu'il a sélectionné dans la page doctors.aspx. Pour réduire le temps de
réponse de cette page, vous devez mettre en cache l'intégralité de la page à
l'aide de la mise en cache de sortie de page.

! Mise en cache de la page medical.aspx


1. Ouvrez la page medical.aspx et passez en mode HTML (Hypertext Markup
Language).
2. Ajoutez une directive OutputCache qui active la mise en cache de sortie
pour l'ensemble de la page. La page doit rester dans le cache pendant
2 minutes et ne doit pas être mise à jour selon les paramètres qui lui sont
passés. Votre code doit ressembler à ce qui suit :
<%@ OutputCache Duration="120" VaryByParam="none"%>

3. Enregistrez et parcourez la page medical.aspx.


4. Cliquez sur le lien Choisissez un médecin.
5. Dans la page doctors.aspx, sélectionnez un médecin dans le DataGrid, puis
cliquez sur Envoyer.
Vous revenez à la page medical.aspx, mais le nom du médecin sélectionné
n'apparaît pas en regard de Médecin de premier recours. Pourquoi ?
____________________________________________________________

____________________________________________________________
66 Module 15 : Configuration, optimisation et déploiement d'une application Web Microsoft ASP.NET

! Utilisation de l'attribut VaryByParam


1. Repassez en mode HTML pour la page medical.aspx.
2. Modifiez la directive OutputCache que vous avez ajoutée et le code pour
créer une nouvelle version mise en cache de la page lorsqu'un autre médecin
est sélectionné dans la page doctors.aspx.
Quel est le nom du paramètre passé de la page doctors.aspx à la page
medical.aspx ?
____________________________________________________________

____________________________________________________________

Votre code doit ressembler à ce qui suit :


<%@ OutputCache Duration="120" VaryByParam="pcp"%>

3. Enregistrez la page medical.aspx et affichez-la dans un navigateur.


4. Cliquez sur le lien Choisissez un médecin.
5. Dans la page Doctors.aspx, sélectionnez un médecin dans le DataGrid, puis
cliquez sur Envoyer.
Vous revenez à la page medical.aspx et le nom du médecin sélectionné
apparaît en regard de Médecin de premier recours.
6. Cliquez à nouveau sur Choisisssez un médecin.
7. Sélectionnez un autre médecin dans le DataGrid, puis cliquez sur Envoyer.
Lorsque vous revenez à la page medical.aspx, la case Médecin de premier
recours affiche le nom du nouveau médecin sélectionné.
Module 15 : Configuration, optimisation et déploiement d'une application Web Microsoft ASP.NET 67

Exercice 3
Mise en cache partielle d'une page
Dans cet exercice, vous allez utiliser la mise en cache de sortie de page pour
mettre en cache le contrôle utilisateur header.ascx. Vous ajouterez tout d'abord
des informations horaires à l'en-tête pour vérifier que le cache fonctionne
correctement.
Scénario Le contrôle utilisateur header.ascx affiche une bannière en haut de chaque page
de votre application Web. Dans la mesure où ces informations ne changent
généralement pas et sont requises pour chaque demande de page, vous devez les
mettre en cache pour les extraire rapidement.

! Ajout d'informations horaires à l'en-tête


1. Ouvrez le fichier header.ascx.
2. Par une opération cliquer-déplacer, déplacez un contrôle label à droite du
texte « Site de sélection des avantages ». Renommez le nouveau contrôle
label en lblTime.
3. Dans la page code-behind de header.ascx, à la fin de la procédure
d'événement Page_Load, ajoutez du code pour que lblTime affiche l'heure
actuelle. Votre code doit ressembler à ce qui suit :
Visual Basic .NET lblTime.Text = DateTime.Now.TimeOfDay.ToString()

C# lblTime.Text = DateTime.Now.TimeOfDay.ToString();

4. Enregistrez et générez header.ascx.


5. Parcourez le formulaire Web doctors.aspx.
Dans la mesure où header.ascx ne peut pas être visualisé dans un navigateur,
vous devez afficher une page qui utilise le contrôle utilisateur.
Pourquoi ne pouvez-vous pas parcourir directement header.ascx ?
____________________________________________________________

____________________________________________________________

6. Actualisez plusieurs fois le navigateur.


Notez que l'heure affichée dans header.ascx change à chaque actualisation
de la page doctors.aspx.
68 Module 15 : Configuration, optimisation et déploiement d'une application Web Microsoft ASP.NET

! Ajout de la mise en cache au fichier d'en-tête


1. Ouvrez header.ascx et passez en mode HTML.
2. Ajoutez une directive OutputCache à la page pour activer la mise en cache
de la page avec une durée de deux minutes. Le cache ne doit pas changer
selon les paramètres passés. Votre code doit ressembler à ce qui suit :
<%@ OutputCache Duration="120" VaryByParam="none"%>

3. Enregistrez et générez header.ascx.


4. Parcourez la page doctors.aspx.
Notez que vous ne devez pas régénérer doctors.aspx, car aucune
modification n'a été apportée à ce fichier.
5. Actualisez plusieurs fois le navigateur.
Notez que l'heure de header.ascx ne change pas à chaque actualisation. S'il
vous reste du temps, patientez encore deux minutes, puis actualisez à
nouveau la page. L'en-tête affiche l'heure actuelle.
Module 15 : Configuration, optimisation et déploiement d'une application Web Microsoft ASP.NET 69

Exercice 4
Utilisation des propriétés dynamiques
Dans cet exercice, vous allez utiliser des propriétés dynamiques pour placer
l'URL du service Web XML DentalService dans le fichier Web.config.
Scénario Un service Web XML peut contenir une URL qui change au fil du temps. Si
votre application Web se connecte à un service Web XML, vous pouvez placer
l'URL de ce service Web dans le fichier Web.config de votre application Web.
Si l'URL du service Web XML change, vous devez simplement mettre à jour le
fichier Web.config, et non changer les informations de proxy et régénérer le
projet. La modification du fichier Web.config ne nécessite pas la regénération
de l'application Web.

! Affichage des paramètres actuels du proxy


1. Ouvrez le fichier proxy du service Web XML DentalService.
Le fichier proxy est intitulé Reference.vb ou Reference.cs et se trouve dans
l'Explorateur de solutions sous Web References\DentalWebRef\
Reference.map.

Conseil Si aucun fichier n'apparaît sous le fichier Reference.map, cliquez


sur l'icône Afficher tous les fichiers en haut de l'Explorateur de solutions
ou cliquez sur Afficher tous les fichiers dans le menu Projet.

2. Dans Reference.vb, recherchez le constructeur intitulé Nouveau. Dans


Reference.cs, recherchez le constructeur intitulé DentalService.
Quelle est l'action de cette méthode ?
____________________________________________________________

____________________________________________________________

3. Dans l'Explorateur de solutions, cliquez avec le bouton droit sur Référence


Web, puis sélectionnez Propriétés.
La référence Web s'intitule DentalWebRef et se situe dans le dossier Web
References.
4. Dans la fenêtre des propriétés, remplacez le paramètre Statique de la
propriété Comportement de l'URL par Dynamique.
5. Lors de l'ouverture de la boîte de dialogue, indiquant que le fichier
Reference.vb ou Reference.cs a changé, cliquez sur Oui pour recharger le
fichier.
70 Module 15 : Configuration, optimisation et déploiement d'une application Web Microsoft ASP.NET

6. Dans Reference.vb ou Reference.cs, recherchez à nouveau le constructeur.


Qu'est-ce qui a changé dans le constructeur ? Quelle est l'action du code
ajouté ?
____________________________________________________________

____________________________________________________________

7. Dans l'Explorateur de solutions, ouvrez le fichier Web.config du projet


Benefits.

Remarque Assurez-vous d'ouvrir le fichier Web.config du projet Benefits


et non le fichier Web.config associé au service Web XML DentalService.

8. Affichez la fin du fichier Web.config et recherchez l'élément appSettings.


Quelles sont les informations contenues dans l'élément appSettings ?
____________________________________________________________

____________________________________________________________
Module 15 : Configuration, optimisation et déploiement d'une application Web Microsoft ASP.NET 71

Exercice 5
Déploiement de votre site
Dans cet exercice, vous allez déployer votre site Web vers un autre serveur.
Vous utiliserez l'ordinateur de votre partenaire de classe en tant que serveur de
déploiement.

! Préparation du dossier pour le déploiement


Ces étapes doivent être réalisées sur l'ordinateur de votre partenaire de classe.
1. Ouvrez l'Explorateur Windows et accédez au répertoire C:\Inetpub\
wwwroot.
2. Cliquez avec le bouton droit sur Lab15VB ou Lab15CS, puis cliquez sur
Partage et sécurité.
3. Dans la fenêtre des propriétés de Lab15VB ou Lab15CS, cliquez sur
Partager ce dossier, puis sur OK.

Important Les autorisations de partage par défaut de Microsoft


Windows® XP octroient le contrôle total du dossier partagé au groupe Tout
le monde. Dans un environnement d'atelier contrôlé, utilisé uniquement à
des fins de test, ce paramètre est acceptable. Sur un serveur de production,
vous ne devez jamais autoriser le groupe Tout le monde à accéder aux
dossiers partagés.

! Préparation du projet en vue du déploiement


1. Dans Visual Studio .NET, dans le menu de la barre d'outils Déboguer,
, cliquez sur Release.
2. Dans le menu Générer, cliquez sur Régénérer la solution.
3. Fermez Visual Studio .NET.

! Sélection et copie des fichiers pour le déploiement


1. Ouvrez l'Explorateur Windows et accédez au répertoire
C:\Inetpub\wwwroot\BenefitsVB ou C:\Inetpub\wwwroot\BenefitsCS.
2. Sélectionnez tous les fichiers et dossiers du dossier Benefits.
3. Dans le menu Edition, cliquez sur Copier.
4. Dans la zone d'adresse de l'Explorateur Windows, tapez
\\partenaire\Lab15VB ou \\partenaire\Lab15CS, où partenaire représente
le nom de l'ordinateur du partenaire de la classe, puis appuyez sur ENTRÉE.
72 Module 15 : Configuration, optimisation et déploiement d'une application Web Microsoft ASP.NET

5. Dans le menu Edition, cliquez sur Coller.


Si le message d'erreur « Accès refusé » s'affiche lors de la copie des fichiers,
vous et votre partenaire devez effectuer les étapes suivantes :
a. Ouvrez l'Explorateur Windows et accédez au dossier C:\Inetpub\
wwwroot.
b. Cliquez avec le bouton droit sur Lab15VB ou Lab15CS, puis cliquez
sur Propriétés.
c. Désactivez l'attribut Lecture seule, puis cliquez sur OK.
d. Dans la boîte de dialogue Confirmation des modifications d'attributs,
cliquez sur Appliquer les modifications à ce dossier et à tous les
sous-dossiers et fichiers, puis sur OK.
Lorsque votre partenaire a réalisé ces quatre étapes, recommencez la copie
de fichiers de l'étape 5.
6. Ouvrez le dossier Lab15VB ou Lab15CS.
Ce dossier contient tous les fichiers de votre site Web.
7. Supprimez les fichiers inutiles au déploiement. Les fichiers que vous pouvez
supprimer contiennent tous les fichiers qui portent les extensions suivantes :
• .resx
• .vbproj
• .vb
• .webinfo
• .vsdisco
• .csproj
• .cs

Remarque Ces fichiers sont généralement supprimés avant la copie sur le


serveur de production. Dans cet atelier, ils sont supprimés après la copie
pour ne pas supprimer les fichiers qui pourraient être utilisés par d'autres
ateliers du cours 2333A, Développement d'applications Web Microsoft
ASP.NET à l'aide de Visual Studio .Net.

8. Fermez l'Explorateur Windows.


Module 15 : Configuration, optimisation et déploiement d'une application Web Microsoft ASP.NET 73

! Test du déploiement
1. Ouvrez Microsoft Internet Explorer.
2. Dans la barre d'adresses, tapez http://partenaire/Lab15VB ou
http://partenaire/Lab15CS où partenaire représente le nom de l'ordinateur
de votre partenaire.
La page Default.aspx s'affiche.
3. Parcourez le site pour vérifier que toutes les pages et les fonctions
apparaissent comme prévu.

Remarque Les dossiers Lab15CS et Lab15VB ont été configurés en tant


que répertoires d'application lors de la configuration de la classe. Vous
devez généralement accéder au serveur Web pour configurer ce dossier en
tant qu'application Web.
THIS PAGE INTENTIONALLY LEFT BLANK

Vous aimerez peut-être aussi