Actualización incremental de ASP.NET a ASP.NET Core
La actualización de una aplicación de ASP.NET Framework a ASP.NET Core no es trivial para la mayoría de las aplicaciones de producción. Estas aplicaciones suelen incorporar nuevas tecnologías a medida que están disponibles y a menudo se componen de muchas decisiones heredadas. En este artículo se proporcionan instrucciones y vínculos a herramientas para actualizar aplicaciones de ASP.NET Framework a ASP.NET Core con el menor cambio posible.
Uno de los desafíos más grandes es el uso generalizado de HttpContext a lo largo de una base de código. Sin el enfoque incremental y las herramientas, se requiere una reescritura a gran escala para eliminar la dependencia de HttpContext. Los adaptadores de dotnet/systemweb-adapters proporcionan un conjunto de asistentes en tiempo de ejecución para acceder a los tipos usados en la aplicación ASP.NET Framework de una manera que funciona en ASP.NET Core con cambios mínimos.
Una migración completa puede llevar un esfuerzo considerable en función del tamaño de la aplicación, las dependencias y las API no portátiles usadas. Para seguir implementando una aplicación en producción mientras se trabaja en la actualización, el mejor patrón es seguir es el patrón Strangler Fig. El patrón Strangler Fig permite el desarrollo continuo en el sistema antiguo con un enfoque incremental para reemplazar partes específicas de la funcionalidad por nuevos servicios. En este documento se describe cómo aplicar el patrón Strangler Fig a una aplicación ASP.NET que se actualiza hacia ASP.NET Core.
Si desea omitir este artículo de información general y empezar, consulte Introducción.
Migración de aplicaciones a ASP.NET Core
Antes de iniciar la migración, la aplicación tiene como destino ASP.NET Framework y se ejecuta en Windows con sus bibliotecas auxiliares:
La migración comienza introduciendo una nueva aplicación basada en ASP.NET Core que se convierte en el punto de entrada. Las solicitudes entrantes van a la aplicación ASP.NET Core, que controla la solicitud o redirige la solicitud a la aplicación .NET Framework a través de YARP. Al principio, la mayoría de los códigos que proporcionan respuestas se encuentra en la aplicación de .NET Framework, pero la aplicación ASP.NET Core ahora está configurada para iniciar la migración de rutas:
Para migrar la lógica de negocios que se basa en HttpContext
, las bibliotecas deben compilarse con Microsoft.AspNetCore.SystemWebAdapters
. La creación de las bibliotecas con SystemWebAdapters
permite:
- Las bibliotecas que se van a compilar en .NET Framework, .NET Core o .NET Standard 2.0.
- Garantiza que las bibliotecas usan las API que están disponibles en ASP.NET Framework y ASP.NET Core.
Microsoft.AspNetCore.SystemWebAdapters
Una vez configurada la aplicación ASP.NET Core con YARP, puede empezar a actualizar las rutas de ASP.NET Framework a ASP.NET Core. Por ejemplo, métodos de acción del controlador de WebAPI o MVC, manejadores o alguna otra implementación de una ruta. Si la ruta está disponible en la aplicación ASP.NET Core, coincide y se sirve.
Durante el proceso de migración, se identifican servicios e infraestructuras adicionales que se deben actualizar para ejecutarse en .NET Core. Entre las opciones enumeradas en orden de mantenimiento se incluyen:
- Traslado del código a bibliotecas compartidas
- Vinculación del código en el nuevo proyecto
- Duplicar el código
Finalmente, la aplicación ASP.NET Core controla más rutas que la aplicación de .NET Framework:
Una vez que la aplicación ASP.NET Framework ya no es necesaria y eliminada:
- La aplicación se ejecuta en la pila de aplicaciones de ASP.NET Core, pero sigue usando los adaptadores.
- El trabajo de migración restante consiste en eliminar el uso de adaptadores.
La extensión de Visual Studio asistente para actualización de .NET puede ayudar a actualizar las aplicaciones web de ASP.NET Framework a ASP.NET Core. Para obtener más información, consulte la entrada de blog Actualización de los proyectos de .NET con Visual Studio.
Adaptadores System.Web
El espacio de nombres Microsoft.AspNetCore.SystemWebAdapters
es una colección de asistentes de tiempo de ejecución que facilitan el uso de código escrito para System.Web
al migrar a ASP.NET Core. Hay algunos paquetes que se pueden usar para usar características de estos adaptadores:
Microsoft.AspNetCore.SystemWebAdapters
: este paquete se utiliza para dar soporte a bibliotecas y proporcionar las API de System.Web de las cuales puede depender, por ejemplo,HttpContext
y otros. Este paquete tiene como destino .NET Standard 2.0, .NET 4.5+, y .NET 6+.Microsoft.AspNetCore.SystemWebAdapters.FrameworkServices
: este paquete solo tiene como destino .NET Framework y está pensado para proporcionar servicios a aplicaciones de ASP.NET Framework que pueden necesitar proporcionar migraciones incrementales. Por lo general, no se espera que se haga referencia a esto desde bibliotecas, sino desde las propias aplicaciones.Microsoft.AspNetCore.SystemWebAdapters.CoreServices
: este paquete solo tiene como destino .NET 6+ y está pensado para proporcionar servicios a aplicaciones de ASP.NET Core para configurar el comportamiento de las API deSystem.Web
, así como participar en cualquier comportamiento para la migración incremental. Por lo general, no se espera que se haga referencia a esto desde bibliotecas, sino desde las propias aplicaciones.Microsoft.AspNetCore.SystemWebAdapters.Abstractions
: este paquete es un paquete auxiliar que proporciona abstracciones para los servicios usados por la aplicación ASP.NET Core y ASP.NET Framework, como la serialización de estado de sesión.
Para obtener ejemplos de escenarios en los que esto resulta útil, consulte el artículo sobre adaptadores.
Para obtener instrucciones sobre el uso, consulte el artículo de instrucciones de uso.