Vue d'ensemble de la migration d'ASP.NET 2.0
Mise à jour : novembre 2007
Plusieurs des concepts de programmation utilisés dans les versions ASP.NET antérieures restent les mêmes dans ASP.NET version 2.0 ; ainsi, les utilisateurs d'ASP.NET 1.x seront familiarisés avec le développement d'applications dans ASP.NET 2.0. ASP.NET 2.0 s'exécute sur les mêmes systèmes d'exploitation et matériel que vous utilisez pour exécuter vos applications ASP.NET 1.x, notamment Microsoft Windows 2000 et Microsoft Internet Information Services 5.0 (IIS), Microsoft Windows XP et IIS 5.1, Microsoft Windows Server 2003 et IIS 6.0.
Si vous possédez une application Web existante que vous avez décidé de migrer vers ASP.NET, vous devez examiner les nouvelles fonctionnalités d'ASP.NET 2.0 avant d'effectuer l'opération. Les modifications les plus importantes concernent le modèle code-behind de la page, la structure des dossiers d'application Web et le modèle de compilation des pages.
Avant d'effectuer une migration, vous devez vérifier que votre application ASP.NET 1.x peut être compilée et exécutée sur la version .NET Framework sur laquelle elle a été développée. En outre, avant de démarrer la migration, vérifiez que Microsoft .NET Framework version 2.0 est installé et qu'il fonctionne.
Cette rubrique aborde les aspects généraux qui doivent être pris en considération avant d'effectuer une migration. Les sections suivantes sont traitées dans cette rubrique :
Avantages de la migration
Modèles de page
Partage de données entre versions ASP.NET
Authentification par formulaire entre les versions ASP.NET
Conflits de nom
Conformité de balisage
HttpOnly et scripts entre sites
Avantages de la migration
La migration de votre application Web vers ASP.NET 2.0 présente beaucoup d'avantages, notamment un balisage et une séparation de code améliorés, des dossiers d'application réservés et une compilation de code automatique.
Le nouveau modèle code-behind basé sur les classes partielles permet une séparation plus nette entre balisage et le code et rend inutiles les déclarations de contrôle et le code de rattachement aux événements dans vos fichiers code-behind. Dans le modèle de compilation des pages ASP.NET, les fichiers code-behind sont compilés au moment de l'exécution dans plusieurs assemblys à la première demande sur les fichiers .aspx correspondants.
ASP.NET utilise désormais une structure d'application Web améliorée basée sur des dossiers réservés. Ces dossiers ont un contenu spécifique vous permettant d'organiser votre application de manière plus efficace. Certains dossiers réservés, comme App_Data, ne servent pas leur contenu en réponse aux demandes Web, mais sont accessibles à partir du code d'application. Pour plus d'informations, consultez Structure de site Web ASP.NET.
Le compilateur ASP.NET 2.0 compile automatiquement le code d'application et les ressources dépendantes lorsqu'une demande est adressée à une ressource de votre site Web. Par exemple, les modifications apportées à une page Web existante ou à des ressources dépendantes dans ASP.NET 2.0 peuvent simplement être enregistrées et la page demandée une nouvelle fois pour qu'elle puisse être recompilée avec ses ressources. Cela s'applique aux ressources telles que les fichiers de code du dossier App_Code, les fichiers de ressources des dossiers App_GlobalResources et App_LocalResources et les thèmes du dossier App_Themes. Pour plus d'informations sur le modèle de compilation des pages, consultez Vue d'ensemble de la compilation ASP.NET.
Si vous migrez une grande application, il est recommandé d'utiliser Visual Web Developer 2005, Visual Web Developer 2005 Express, Visual Studio 2005ou Visual Studio 2005 Team System. Chacune de ces applications dispose d'un Assistant de migration qui automatise de nombreuses tâches relatives à une migration classique. L'Assistant apporte les modifications nécessaires pour convertir les applications Web ASP.NET 1.x en ASP.NET 2.0.
Il n'est pas nécessaire de migrer les applications Web parce qu'ASP.NET 2.0 fournit un niveau élevé de compatibilité descendante avec les versions antérieures. Si vous n'effectuez pas de migration, vous pouvez encore utiliser plusieurs des fonctionnalités ASP.NET 2.0 dans votre application Web, tant que votre application utilise le .NET Framework 2.0. Pour configurer votre application Web existante afin d'utiliser le .NET Framework 2.0, consultez Comment : exécuter des applications ASP.NET 1.x dans .NET Framework 2.0.
Modèles de page
Le modèle de page Web code-behind d'ASP.NET vous permet de stocker le balisage d'une page Web dans un fichier (fichier .aspx) et le code de programmation dans un autre (fichier code-behind). Le modèle code-behind pour ASP.NET 2.0 est différent des versions antérieures en ce sens qu'il utilise de nouvelles fonctionnalités de langage appelées classes partielles. Le nouveau modèle code-behind dans ASP.NET 2.0 permet même une séparation plus nette du balisage et du code que les versions ASP.NET antérieures.
Les pages Web qui utilisent l'ancien modèle code-behind basé sur l'attribut CodeBehind de la directive @ Page continueront à fonctionner dans ASP.NET 2.0. Toutefois, il est recommandé de migrer ces pages vers le nouveau modèle code-behind à l'aide de l'attribut CodeFile de la directive @ Page et d'une définition de classe partielle dans le fichier code-behind pour tirer parti du balisage et de la séparation de code améliorés ainsi que de la compilation automatique de pages. Les pages Web qui utilisent l'ancien modèle code-behind doivent être compilées manuellement.
Vous pouvez effectuer les modifications manuellement, comme décrit dans Comment : migrer une page Web ASP.NET 1.1 à l'aide de l'attribut CodeBehind vers ASP.NET 2.0, ou utiliser l'une des versions Microsoft Visual Studio 2005 qui inclut un Assistant de migration, par exemple Visual Web Developer 2005 Express.
ASP.NET version 1.1 prend aussi en charge une variante du modèle code-behind dans lequel l'attribut CodeBehind de la directive @ Page est remplacé par un attribut Src. Une page Web utilisant l'attribut Src continuera à fonctionner dans ASP.NET 2.0 et ne nécessite pas de modification pour s'exécuter.
Comme solution de remplacement au modèle code-behind, le modèle de page à fichier unique place le balisage et le code de programmation de la page dans le même fichier .aspx physique. Les pages à fichier unique des versions ASP.NET antérieures continueront à fonctionner dans ASP.NET 2.0 et ne nécessitent pas de modification pour s'exécuter.
Partage de données entre versions ASP.NET
Vous pouvez choisir de migrer certaines parties de votre site Web vers ASP.NET 2.0 tout en laissant les autres non modifiées. Si votre site Web est divisé en applications Web indépendantes fonctionnant ensemble pour fournir les fonctionnalités de votre site Web, vous pouvez migrer certaines d'entre elles. Dans ce scénario, vous ne serez pas en mesure de partager l'état de l'application entre les applications migrées et celles qui ne le sont pas. L'état de la session ne sera pas non plus partagé entre les applications à moins que vous fournissiez une solution d'état de session personnalisée accessible à partir des pages ASP.NET 1.x et ASP.NET 2.0. Pour plus d'informations, consultez Implémentation d'un fournisseur de magasins d'état de session.
Authentification par formulaire entre les versions ASP.NET
L'authentification par formulaire vous offre un moyen d'authentifier des utilisateurs à l'aide de votre propre code puis de conserver un jeton d'authentification dans un cookie ou dans l'URL de la page. L'authentification par formulaire ASP.NET peut être effectuée de façon à fonctionner entre des applications qui exécutent différentes versions d'ASP.NET afin que les tickets d'authentification émis par une version puissent être utilisés par l'autre.
La configuration de l'authentification pour qu'elle fonctionne dans les versions ASP.NET est similaire au processus de configuration de l'authentification dans un réseau de serveurs Web (batterie de serveurs Web). Dans les deux cas, vous définissez explicitement les attributs validationKey et decryptionKey de l'élément machineKey pour les applications qui partagent les tickets d'authentification avec la même clé. Pour prendre en charge l'authentification dans les versions ASP.NET, vous devez effectuer la modification supplémentaire consistant à affecter l'attribut decryption de l'élément machineKey à 3DES dans le fichier Web.config de votre application ASP.NET 2.0. Le chiffrement par défaut pour ASP.NET 2.0 est AES, tandis que les versions ASP.NET antérieures utilisent 3DES. Pour plus d'informations, consultez Vue d'ensemble de l'authentification par formulaire ASP.NET.
Conflits de nom
Avant d'effectuer une migration, il est recommandé d'analyser votre application Web et de rechercher les noms qui entrent en conflit avec les classes et espaces de noms de fonctionnalités dans le .NET Framework 2.0. Des conflits peuvent survenir lorsque des noms communs comme cache, appartenance, profil et rôle sont utilisés dans votre application Web alors qu'ils sont déjà en usage dans le .NET Framework. Pour éviter un conflit de nom, recherchez les références de votre code à tous les noms en question et utilisez une référence qualifiée complète.
ASP.NET 2.0 utilise une disposition de site Web différente de celle des versions antérieures. Pour faciliter l'utilisation de vos applications Web, ASP.NET emploie certains noms de dossiers et de fichiers que vous pouvez utiliser pour des types de contenu spécifiques. Le contenu des dossiers réservés n'est pas fourni aux demandes Web qui lui sont adressées ; cela peut créer des problèmes dans votre application existante. Par conséquent, avant de migrer des fichiers d'application, il est recommandé de remplacer les noms de chacun de vos dossiers ou fichiers d'application qui entrent en conflit par les noms de fichiers et de dossiers réservés ASP.NET 2.0. Pour plus d'informations sur les dossiers réservés dans les dispositions de site Web ASP.NET, consultez Disposition des sites Web ASP.NET.
Conformité de balisage
Par défaut, tout le balisage produit par ASP.NET et les contrôles serveur Web inclus avec ASP.NET est désormais conforme au standard XHTML 1.0. Cela peut causer des problèmes de rendu HTML involontaires après la migration. Pour vous aider dans la migration d'une application Web, vous pouvez affecter l'attribut de mode de l'élément xhtmlConformance à Legacy dans votre fichier Web.config. Cette étape doit être temporaire dans le processus de migration. À long terme, il est recommandé d'exécuter votre application en affectant l'attribut mode de l'élément xhtmlConformance à Transitional. En outre, il est recommandé d'ajouter l'élément DOCTYPE à vos pages migrées. Pour plus d'informations sur les avantages relatifs à la mise en conformité des pages Web à XHTML, consultez ASP.NET et XHTML.
HttpOnly et scripts entre sites
La propriété HttpOnly de la classe HttpCookie est une nouveauté du .NET Framework 2.0. L'affectation de la valeur true à cette propriété peut aider à atténuer les menaces liées aux scripts entre sites. La propriété HttpOnly a automatiquement la valeur true pour les cookies d'authentification par formulaire et les cookies d'ID de session afin que ces cookies ne soient pas disponibles pour les scripts côté client. Si une page Web migrée lève une exception NullReferenceException, elle peut indiquer que la session du client a été perdue, car la propriété HttpOnly avait la valeur true. Si tel est le cas, vous pouvez utiliser l'une des résolutions suivantes :
Affectez à la propriété HttpOnly de chaque cookie la valeur false dans le gestionnaire d'événements EndRequest de la classe HttpApplication dans le fichier Global.asax.
Écrivez un module personnalisé qui copie le cookie dans un autre cookie et efface la propriété HttpOnly pour une manipulation par le script client.
Écrivez un gestionnaire d'ID de session personnalisé qui n'affecte pas à la propriété HttpOnly la valeur true.
Pour plus d'informations sur l'atténuation des risques liés aux scripts entre sites, consultez le didacticiel (en anglais) Mitigating Cross-site Scripting with HTTP-only Cookies.
Voir aussi
Concepts
Vue d'ensemble des projets d'application Web
Vue d'ensemble de l'authentification par formulaire ASP.NET