Migrer de ASP.NET Framework vers ASP.NET Core

La mise à jour d’une application de ASP.NET Framework vers ASP.NET Core n’est pas triviale pour la majorité des applications de production. Ces applications incorporent souvent de nouvelles technologies dès qu’elles deviennent disponibles et sont souvent composées de nombreuses décisions héritées. Ce guide fournit des approches pratiques et des outils permettant de mettre à jour les applications ASP.NET Framework pour ASP.NET Core avec le moins de modifications possible.

Pourquoi la migration est difficile

La migration de ASP.NET Framework vers ASP.NET Core implique plusieurs défis complexes qui rendent une réécriture complète difficile et risquée pour la plupart des applications de production :

Accumulation de dettes techniques

Les applications de production accumulent souvent une dette technique au fil des années de développement :

  • Dépendances System.Web : utilisation omniprésente de HttpContext et types associés dans l'ensemble d’une base de code.
  • Dépendances de package obsolètes qui n’ont peut-être pas d’équivalents compatibles modernes.
  • Outils de génération hérités et configurations de projet qui ne sont pas compatibles avec les versions modernes de .NET.
  • Utilisation déconseillée de l’API qui doit être remplacée par des alternatives modernes.
  • Avertissements du compilateur et problèmes de qualité du code qui compliquent la migration.

Problèmes transversaux

De nombreuses applications ont des préoccupations croisées qui s’étendent sur plusieurs couches et ont besoin d’une coordination minutieuse pendant la migration :

  • Gestion de l’état de session - ASP.NET Framework et ASP.NET Core ont des API et des comportements de session fondamentalement différents.
  • Authentification et autorisation : différents modèles d’authentification et API entre les frameworks.
  • Journalisation et surveillance : vous devez conserver la journalisation cohérente entre les deux applications pendant la migration.
  • Stratégies de mise en cache : la mise en cache en mémoire, distribuée ou de sortie doit être maintenue de manière cohérente.
  • Gestion des erreurs : établissement de modèles de gestion des erreurs cohérents entre les deux applications.
  • Gestion de la configuration : gestion des paramètres qui doivent être partagés ou synchronisés entre les applications.
  • Injection de dépendances : migration de différents conteneurs d'di vers le conteneur intégré de ASP.NET Core.

Le modèle d’hôte générique peut aider à résoudre plusieurs de ces problèmes en apportant une infrastructure .NET moderne aux applications ASP.NET Framework. Pour plus d’informations, consultez l’hôte générique .NET dans ASP.NET Framework.

Chaînes de dépendances des bibliothèques

Les bibliothèques prises en charge ont souvent des relations de dépendance complexes qui nécessitent un ordre prudent de mise à niveau :

  • Complexité de l’arborescence des dépendances : les bibliothèques doivent être mises à niveau selon un ordre de recherche de parcours en profondeur.
  • Exigences multi-ciblage : les bibliothèques doivent prendre en charge toutes les versions de framework ciblées par l’application.
  • Compatibilité des API : s’assurer que les bibliothèques fonctionnent avec les deux versions du framework pendant la période de migration.
  • Complexité des tests : chaque mise à niveau de bibliothèque nécessite des tests approfondis pour garantir la compatibilité.

Différences d’architecture d’application

Les différences fondamentales entre ASP.NET Framework et ASP.NET Core créent des défis supplémentaires :

  • Modèles d’hébergement - Différentes approches de l’hébergement et de la gestion du cycle de vie des applications
  • Pipeline d’intergiciel : passage de modules et de gestionnaires HTTP à l’intergiciel
  • Traitement des demandes - Différents modèles et contextes de traitement des demandes
  • Caractéristiques de performances - Différents modèles d’utilisation de la mémoire et profils de performances

Ces défis rendent la migration incrémentielle l’approche recommandée pour la plupart des applications de production. Cette approche permet aux équipes de résoudre ces problèmes progressivement tout en conservant une application opérationnelle en production.

Pour obtenir de la documentation sur les domaines importants qui ont changé, consultez les rubriques associées disponibles dans les scénarios de migration complexes - Zones de plongée approfondies.

Commencez ici : Choisissez votre chemin de migration

Vous pouvez déplacer correctement votre application ASP.NET Framework vers ASP.NET Core. La clé consiste à choisir l’approche appropriée pour votre situation spécifique.

Tip

Quel que soit le chemin que vous choisissez, l’agent de modernisation gitHub application Copilot peut évaluer votre solution, générer un plan de mise à niveau et automatiser la plupart des étapes de migration. Pour plus d’informations, consultez Apprenez à migrer de ASP.NET MVC, Web API et Web Forms vers ASP.NET Core.

Guide de décision rapide

Répondez à ces questions pour choisir votre approche :

  1. Quelle est votre chronologie et votre tolérance aux risques ?

  2. Quelle est la taille de votre application ?

  3. Avez-vous des dépendances complexes ?

Migration incrémentielle

La migration incrémentielle est une implémentation du modèle Fig Strangler. Il est préférable pour les projets ou projets plus volumineux qui doivent continuer à rester en production tout au long d’une migration. Pour commencer à migrer une application de manière incrémentielle, consultez Prise en main de la migration incrémentielle d’ASP.NET vers ASP.NET Core.

Migration sur place

La migration sur place peut fonctionner pour des applications suffisamment petites. Si possible, cette approche permet un remplacement rapide de l’application. Cependant, de petits problèmes peuvent s’aggraver si vous décidez d’effectuer une migration sur place. Pour plus d’informations sur les options d’outils de migration, consultez Learn to upgrade from ASP.NET MVC, Web API and Web Forms to ASP.NET Core.