Mise à jour incrémentielle de ASP.NET 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. Cet article fournit des conseils et des liens vers des outils pour la mise à jour des applications ASP.NET Framework vers ASP.NET Core avec le moins de modifications possible.
L’un des défis les plus importants est l’utilisation omniprésente de HttpContext dans une base de code. Sans l’approche incrémentielle et les outils, une réécriture à grande échelle est nécessaire pour supprimer la dépendance HttpContext. Les adaptateurs de dotnet/systemweb-adapters fournissent un ensemble d'outils d'exécution pour accéder aux types utilisés dans l’application ASP.NET Framework de manière à fonctionner dans ASP.NET Core avec des modifications minimales.
Une migration complète peut prendre beaucoup d’efforts en fonction de la taille de l’application, des dépendances et des API non portables utilisées. Pour continuer à déployer une application en production tout en travaillant sur la mise à jour, le meilleur modèle est le modèle Strangler Fig. Le modèle Strangler Fig permet un développement continu de l'ancien système avec une approche incrémentale pour remplacer des éléments spécifiques de fonctionnalité par de nouveaux services. Ce document explique comment appliquer le modèle Fig Strangler à une application ASP.NET mise à jour vers ASP.NET Core.
Si vous souhaitez passer outre cet article de présentation et démarrer, consultez la rubrique Démarrage.
Migration d’applications vers ASP.NET Core
Avant de commencer la migration, l’application cible ASP.NET Framework et s’exécute sur Windows avec ses bibliothèques de prise en charge :
La migration commence par introduire une nouvelle application basée sur ASP.NET Core qui devient le point d’entrée. Les requêtes entrantes sont envoyées à l’application ASP.NET Core, qui gère la requête ou transmet la requête à l’application .NET Framework via YARP. Au début, la majorité du code fournissant des réponses se trouve dans l’application .NET Framework, mais l’application ASP.NET Core est maintenant configurée pour démarrer la migration des itinéraires :
Pour migrer la logique métier qui s’appuie sur HttpContext
, les bibliothèques doivent être générées avec Microsoft.AspNetCore.SystemWebAdapters
. La création des bibliothèques avec SystemWebAdapters
permet :
- Bibliothèques à générer sur .NET Framework, .NET Core ou .NET Standard 2.0.
- Garantit que les bibliothèques utilisent des API disponibles sur ASP.NET Framework et ASP.NET Core.
Une fois que l’application ASP.NET Core à l’aide de YARP est configurée, vous pouvez commencer à mettre à jour des itinéraires de ASP.NET Framework vers ASP.NET Core. Par exemple, les méthodes d'action des contrôleurs WebAPI ou MVC, les gestionnaires ou toute autre implémentation d'une route. Si l’itinéraire est disponible dans l’application ASP.NET Core, il est mis en correspondance et servi.
Pendant le processus de migration, des services et une infrastructure supplémentaires sont identifiés qui doivent être mis à jour pour s’exécuter sur .NET Core. Les options répertoriées dans l’ordre de maintenance sont les suivantes :
- Déplacer le code vers des bibliothèques partagées
- Lier le code dans le nouveau projet
- Dupliquer le code
Finalement, l’application ASP.NET Core gère plus d’itinéraires que l’application .NET Framework :
Une fois que l’application ASP.NET Framework n’est plus nécessaire et supprimée :
- L’application s’exécute sur la pile d’applications ASP.NET Core, mais utilise toujours les adaptateurs.
- Le travail de migration restant supprime l’utilisation des adaptateurs.
L’extension Visual Studio Assistant Mise à niveau .NET peut aider à mettre à niveau les applications web ASP.NET Framework vers ASP.NET Core. Pour plus d’informations, consultez le billet de blog Mise à niveau de vos projets .NET avec Visual Studio.
Adaptateurs System.Web
L’espace de noms Microsoft.AspNetCore.SystemWebAdapters
est une collection d’assistances runtime qui facilitent l’utilisation du code écrit sur System.Web
tout en passant à ASP.NET Core. Il existe quelques packages qui peuvent être utilisés pour utiliser des fonctionnalités de ces adaptateurs :
Microsoft.AspNetCore.SystemWebAdapters
: ce package est utilisé dans les bibliothèques de prise en charge et fournit les API System.Web sur lesquelles vous avez peut-être pris une dépendance, commeHttpContext
et d’autres. Ce package cible .NET Standard 2.0, .NET 4.5+ et .NET 6+.Microsoft.AspNetCore.SystemWebAdapters.FrameworkServices
: ce package cible uniquement .NET Framework et est destiné à fournir des services aux applications ASP.NET Framework qui peuvent avoir besoin de fournir des migrations incrémentielles. Cela n’est généralement pas censé être référencé à partir de bibliothèques, mais plutôt à partir des applications elles-mêmes.Microsoft.AspNetCore.SystemWebAdapters.CoreServices
: ce package cible uniquement .NET 6+ et est destiné à fournir des services aux applications ASP.NET Core afin de configurer le comportement des APISystem.Web
, ainsi que de choisir les comportements de migration incrémentielle. Cela n’est généralement pas censé être référencé à partir de bibliothèques, mais plutôt à partir des applications elles-mêmes.Microsoft.AspNetCore.SystemWebAdapters.Abstractions
: ce package est un package de prise en charge qui fournit des abstractions pour les services utilisés par l’application ASP.NET Core et ASP.NET Framework, comme la sérialisation de l’état de session.
Pour des exemples de scénarios où cela est utile, consultez l'article sur les adaptateurs.
Pour obtenir des conseils sur l’utilisation, consultez l’article guide d’utilisation.