Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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 ont souvent accumulé 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 la version moderne 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
Préoccupations croisées
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 - Nécessité de maintenir la journalisation cohérente entre les deux applications lors de 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 de DI vers le conteneur intégré d'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 de bibliothèque
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 - Garantir 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, car elle 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
Votre application ASP.NET Framework peut passer à ASP.NET Core. La clé consiste à choisir l’approche appropriée pour votre situation spécifique.
Guide de décision rapide
Répondez à ces questions pour choisir votre approche :
Quelle est votre chronologie et votre tolérance aux risques ?
- Besoin de rester en production pendant la migration → migration incrémentielle
- Peut se permettre une réécriture complète → Migration sur place
Quelle est la taille de votre application ?
- Petites et moyennes applications → migration sur place
- Les applications de production à grande échelle → la migration incrémentielle est plus sécurisée
Avez-vous des dépendances complexes ?
- Dépendances inconnues ou obsolètes → migration incrémentielle
- Utilisation intensive de System.Web → migration incrémentielle
- Dépendances minimales → migration sur place
Migration incrémentielle
La migration incrémentielle est une implémentation du modèle Strangler Fig et est optimale pour les grands projets ou ceux qui doivent rester en production tout au long d’une migration. Consultez Commencez avec la migration incrémentielle d'ASP.NET vers ASP.NET Core pour commencer à migrer une application de manière incrémentielle.
Migration sur place
La migration sur place peut fonctionner pour des applications suffisamment petites. Si possible, cela permet un remplacement rapide de l’application. Toutefois, de petits problèmes peuvent être amplifiés si vous décidez d’effectuer une migration sur place. Consultez Apprenez à passer de ASP.NET MVC, Web API et Web Forms à ASP.NET Core pour des informations sur les options d'outils de migration.