Partager via


Prise en main de la migration incrémentielle de ASP.NET vers ASP.NET Core

Important

Avant de commencer : cet article suppose que vous avez lu la vue d’ensemble de la migration ASP.NET Core. Si vous ne l’avez pas encore lu, commencez par comprendre les concepts, l’approche et les avantages de la migration incrémentielle.

Pour une migration volumineuse, nous vous recommandons de configurer une application ASP.NET Core qui proxies vers l’application .NET Framework d’origine. La nouvelle application avec proxy activée s’affiche dans l’image suivante :

commencer à migrer des itinéraires

Cet article fournit les étapes pratiques permettant de poursuivre une migration incrémentielle après avoir compris l’approche.

Prerequisites

Avant de commencer votre migration incrémentielle, vérifiez que vous disposez des points suivants :

  1. Lisez la vue d’ensemble : Migration incrémentielle d'ASP.NET vers ASP.NET Core
  2. Application ASP.NET Framework opérationnelle que vous souhaitez migrer
  3. Visual Studio 2022 avec les dernières mises à jour
  4. Kit de développement logiciel (SDK) .NET 8 ou version ultérieure installé
  5. Compréhension des dépendances de votre application et des bibliothèques tierces

Vue d’ensemble des étapes de migration

Le processus de migration incrémentielle suit les étapes clés suivantes :

  1. Configurer ASP.NET projet principal
  2. Remédier à la dette technique
  3. Identifier et résoudre les préoccupations croisées
  4. Mettre à niveau les bibliothèques de support

Configurer ASP.NET projet principal

La première étape consiste à créer la nouvelle application ASP.NET Core qui servira de proxy.

Ce que vous allez faire :

  • Créer un projet ASP.NET Core en même temps que votre application ASP.NET Framework existante
  • Configurez-le pour les demandes de proxy à votre application d’origine à l’aide de YARP (Encore un autre proxy inverse)
  • Configurer l’infrastructure de base pour la migration incrémentielle

Instructions détaillées :

Corriger la dette technique

Quand effectuer cette étape : Avant de mettre à niveau les bibliothèques de prise en charge, résolvez la dette technique qui pourrait compliquer le processus de migration.

Avant de commencer à mettre à niveau vos bibliothèques de prise en charge, il est important de nettoyer la dette technique qui pourrait interférer avec le processus de migration. Cette étape doit d’abord être effectuée pour garantir une expérience de mise à niveau plus fluide.

Mettre à jour les dépendances des paquets

Passez en revue et mettez à jour vos packages NuGet vers leurs dernières versions compatibles :

  1. Auditer les packages existants : utiliser le Gestionnaire de package NuGet de Visual Studio, car l’interface dotnet CLI ne fonctionne pas pour les applications ASP.NET Framework
  2. Mettre à jour les packages de manière incrémentielle : mettre à jour les packages un par un pour éviter les problèmes de compatibilité
  3. Tester après chaque mise à jour : vérifiez que votre application fonctionne toujours correctement après chaque mise à jour de package
  4. Traiter les modifications critiques : certaines mises à jour de package peuvent introduire des modifications critiques qui doivent être traitées

Moderniser les outils de compilation

Mettez à jour vos outils de génération et votre configuration de projet :

  1. Outils de mise à jour : vérifiez que vous utilisez une version récente de MSBuild/Visual Studio
  2. Migrer vers PackageReference pour les dépendances : envisagez de migrer de packages.config vers le PackageReference format si vous ne l’avez pas déjà fait dans le projet d’application web
  3. Nettoyer les références inutilisées : supprimer les références d’assembly inutilisées ou les packages NuGet
  4. Migrer vers des fichiers projet de style SDK : convertissez vos fichiers projet existants au format de style SDK moderne. Cela est essentiel pour la compatibilité avec les projets .NET modernes et offre une meilleure prise en charge des outils
  5. Mettre à jour les scripts de build : passez en revue et mettez à jour tous les scripts de build personnalisés ou configurations CI/CD

Résoudre les problèmes de qualité du code

Corrigez les problèmes de qualité du code connus susceptibles de compliquer la migration :

  1. Correction des avertissements du compilateur : corrigez les avertissements du compilateur, avec une attention particulière aux API dépréciées.
  2. Supprimer le code mort : nettoyer les classes, méthodes et autres éléments de code inutilisés
  3. Mise à jour de l’utilisation déconseillée de l’API : remplacez l’utilisation des API dépréciées par leurs équivalents modernes si possible

Ce travail de préparation rend le processus de mise à niveau de la bibliothèque beaucoup plus fluide et réduit la probabilité de rencontrer des problèmes complexes pendant la migration.

Identifier et résoudre les préoccupations croisées

Quand effectuer cette étape : Lors de la correction de la dette technique, mais avant la mise à niveau des bibliothèques de prise en charge, identifiez et configurez des préoccupations croisées qui affectent l’ensemble de votre application.

Les préoccupations croisées sont des aspects de votre application qui s’étendent sur plusieurs couches ou composants, tels que l’authentification, la gestion des sessions, la journalisation et la mise en cache. Celles-ci doivent être traitées au début du processus de migration, car elles affectent la façon dont vos applications ASP.NET Framework et ASP.NET Core communiquent et partagent l’état pendant la migration incrémentielle.

Les sections suivantes couvrent les préoccupations les plus courantes. Configurez uniquement ceux qui s’appliquent à votre application :

Configuration du support de session

Configurez cette option si : Votre application ASP.NET Framework utilise l’état de session.

Consultez la documentation générale sur la migration de session pour obtenir des conseils ici.

La session est une fonctionnalité couramment utilisée de ASP.NET qui partage le nom avec une fonctionnalité dans ASP.NET Core, mais les API sont beaucoup différentes. Lors de la mise à niveau des bibliothèques qui utilisent l’état de session, vous devez configurer la prise en charge de la session. Consultez la documentation sur la prise en charge des sessions à distance pour obtenir des instructions détaillées sur la façon d’activer le partage d’état de session entre vos applications.

Configuration de l’authentification

Configurez cette option si : Votre application ASP.NET Framework utilise l’authentification et vous souhaitez partager l’état d’authentification entre les anciennes et nouvelles applications.

Consultez la documentation générale sur la migration de l’authentification pour obtenir des orientations.

Il est possible de partager l’authentification entre l’application ASP.NET d’origine et la nouvelle application ASP.NET Core à l’aide de la fonctionnalité d’authentification à distance des adaptateurs System.Web. Cette fonctionnalité permet à l’application ASP.NET Core de différer l’authentification vers l’application ASP.NET d’origine. Pour plus d’informations, consultez la documentation sur l’authentification à distance .

Autres préoccupations croisées à prendre en compte

Selon votre application, vous devrez peut-être également résoudre les problèmes suivants :

  • Journalisation : vérifiez la journalisation cohérente entre les deux applications. Envisagez d’utiliser un fournisseur de journalisation partagé ou de vérifier que les journaux sont agrégés correctement.
  • Mise en cache : si votre application utilise la mise en cache (mise en cache en mémoire, distribuée ou mise en cache de sortie), planifiez la façon de maintenir la cohérence du cache entre les applications.
  • Gestion des erreurs : établissez une gestion et des rapports d’erreurs cohérents dans l’infrastructure ASP.NET et les applications ASP.NET Core.
  • Gestion de la configuration : planifiez la façon dont les paramètres de configuration seront partagés ou gérés entre les deux applications.
  • Surveillance de l'état de santé : configurez la surveillance et les vérifications d'intégrité pour les deux applications pendant le processus de migration.
  • Injection de dépendances : si vous utilisez un conteneur DI dans votre application ASP.NET Framework, planifiez la migration vers le conteneur DI intégré d'ASP.NET Core.

Mettre à niveau les bibliothèques de prise en charge

Quand effectuer cette étape : Uniquement lorsque vous devez migrer des itinéraires spécifiques qui dépendent des bibliothèques de classes contenant la logique métier, vous devez partager entre les anciennes et les nouvelles applications.

Note

Approche incrémentielle : avec le processus de migration incrémentielle, vous n’avez pas besoin de mettre à niveau toutes vos bibliothèques de prise en charge en même temps. Vous devez uniquement mettre à niveau les bibliothèques requises pour les itinéraires spécifiques que vous migrez actuellement. Cela vous permet d’aborder la migration en pièces plus petites et plus gérables.

Processus de mise à niveau de bibliothèque

Important

La mise à niveau des bibliothèques de support doit être effectuée selon un ordre de parcours en profondeur. En d’autres termes :

  1. Commencer par les dépendances en feuille : commencez par les bibliothèques qui n’ont aucune dépendance sur d’autres bibliothèques dans votre solution
  2. Parcourir l’arborescence des dépendances : mise à niveau d’une bibliothèque uniquement une fois que toutes ses dépendances ont été correctement mises à niveau
  3. Fin avec l’application principale : l’application principale ASP.NET Framework doit être le dernier élément à modifier

Cet ordre est essentiel car :

  • Il garantit que lorsque vous mettez à niveau une bibliothèque, toutes ses dépendances sont déjà compatibles
  • Cela empêche les problèmes de dépendance circulaire pendant le processus de mise à niveau
  • Il vous permet de tester chaque bibliothèque indépendamment avant de passer à ses dépendants

REMARQUE : Vous devez uniquement suivre cet ordre pour le sous-ensemble de bibliothèques requis par les itinéraires que vous migrez actuellement, et non votre solution entière.

Processus de mise à niveau pour chaque bibliothèque :

Si vous avez des bibliothèques de prise en charge dans votre solution que vous devez utiliser pour les itinéraires que vous migrez, elles doivent être mises à niveau vers .NET Standard 2.0, si possible. La modernisation des applications GitHub Copilot peut vous aider à le faire. Si les bibliothèques ne peuvent pas cibler .NET Standard, vous pouvez cibler .NET 8 ou version ultérieure, ainsi que la cible .NET Framework dans le projet d’origine ou dans un nouveau projet en même temps que l’original.

Les adaptateurs System.Web peuvent être utilisés dans ces bibliothèques pour permettre la prise en charge de HttpContext dans les bibliothèques de classes. Pour activer l'usage de HttpContext dans une bibliothèque :

  1. Supprimer la référence à System.Web dans le fichier de projet
  2. Ajouter le paquet Microsoft.AspNetCore.SystemWebAdapters
  3. Activez le multi-ciblage et ajoutez une cible .NET 8 ou une version ultérieure, ou convertissez le projet en .NET Standard 2.0.

Cette étape peut nécessiter un certain nombre de projets à modifier en fonction de la structure de votre solution et des itinéraires que vous migrez. La modernisation des applications Copilot GitHub peut vous aider à identifier celles qui doivent changer et automatiser un certain nombre d’étapes dans le processus.

Étapes suivantes

Une fois que vous avez terminé les étapes de mise à niveau de la configuration et de la bibliothèque ci-dessus :

  1. Commencer petit : commencez par migrer des points de terminaison simples et sans état en premier
  2. Tester soigneusement : vérifiez que chaque composant migré fonctionne correctement dans les deux environnements
  3. Surveiller les performances : surveillez les impacts sur les performances de la configuration du proxy
  4. Itérer : Continuer la migration des composants de manière incrémentielle jusqu’à ce que la migration soit terminée