Compartir a través de


Introducción a la migración incremental de ASP.NET a ASP.NET Core

Important

Antes de comenzar: en este artículo se da por supuesto que ha leído la introducción a la migración de ASP.NET Core. Si aún no lo ha leído, comience allí para comprender los conceptos, el enfoque y las ventajas de la migración incremental.

Para una migración grande, se recomienda configurar una aplicación de ASP.NET Core que proxies a la aplicación original de .NET Framework. La nueva aplicación habilitada para proxy se muestra en la imagen siguiente:

iniciar la migración de rutas

En este artículo se proporcionan los pasos prácticos para continuar con una migración incremental después de comprender el enfoque.

Prerequisites

Antes de iniciar la migración incremental, asegúrese de que tiene:

  1. Lea la información general: Migración incremental de ASP.NET a ASP.NET Core
  2. Una aplicación de ASP.NET Framework en funcionamiento que desea migrar
  3. Visual Studio 2022 con las actualizaciones más recientes
  4. SDK de .NET 8 o posterior instalado
  5. Descripción de las dependencias de la aplicación y las bibliotecas de terceros

Introducción a los pasos de migración

El proceso de migración incremental sigue estos pasos clave:

  1. Configurar ASP.NET Core Project
  2. Corrección de la deuda técnica
  3. Identificar y abordar problemas transversales
  4. Actualización de bibliotecas auxiliares

Configurar Proyecto de ASP.NET Core

El primer paso es crear la nueva aplicación ASP.NET Core que servirá como proxy.

Qué hará:

  • Cree un nuevo proyecto de ASP.NET Core junto con la aplicación existente de ASP.NET Framework
  • Configúrelo para que las solicitudes se redirijan a su aplicación original usando YARP (Yet Another Reverse Proxy).
  • Configuración de la infraestructura básica para la migración incremental

Instrucciones detalladas:

Corrección de la deuda técnica

Cuándo realizar este paso: Antes de actualizar las bibliotecas auxiliares, solucione la deuda técnica que podría complicar el proceso de migración.

Antes de empezar a actualizar las bibliotecas auxiliares, es importante limpiar la deuda técnica que podría interferir con el proceso de migración. Este paso debe completarse primero para garantizar una experiencia de actualización más fluida.

Actualizar dependencias de paquetes

Revise y actualice los paquetes NuGet a sus versiones compatibles más recientes:

  1. Auditar paquetes existentes: use el Administrador de paquetes NuGet de Visual Studio, ya que la dotnet CLI no funciona para aplicaciones de ASP.NET Framework.
  2. Actualizar paquetes de forma incremental: actualice los paquetes de uno en uno para evitar problemas de compatibilidad.
  3. Prueba después de cada actualización: asegúrese de que la aplicación sigue funcionando correctamente después de cada actualización del paquete.
  4. Abordar los cambios importantes: Algunas actualizaciones de paquetes pueden introducir cambios importantes que deben abordarse.

Modernización de las herramientas de compilación

Actualice las herramientas de compilación y la configuración del proyecto:

  1. Herramientas de actualización: asegúrese de que usa una versión reciente de MSBuild/Visual Studio.
  2. Migrar a PackageReference para las dependencias: considere migrar del formato packages.config al formato PackageReference si aún no lo ha hecho en el proyecto de aplicación web.
  3. Limpieza de referencias no usadas: quite las referencias de ensamblado no usadas o los paquetes NuGet.
  4. Migración a archivos de proyecto de estilo SDK: convierta los archivos de proyecto existentes en el formato moderno de estilo SDK. Esto es esencial para la compatibilidad con proyectos modernos de .NET y proporciona una mejor compatibilidad con herramientas
  5. Actualizar scripts de compilación: revise y actualice los scripts de compilación personalizados o las configuraciones de CI/CD.

Solucionar problemas de calidad del código

Corrija problemas conocidos de calidad del código que podrían complicar la migración:

  1. Corrección de advertencias del compilador: solucione las advertencias del compilador, especialmente las relacionadas con las API en desuso.
  2. Quitar código fallido: limpieza de clases, métodos y otros elementos de código sin usar
  3. Actualización del uso de APIs en desuso: reemplace el uso de las APIs en desuso por sus equivalentes modernos siempre que sea posible.

Este trabajo de preparación hará que el proceso de actualización de la biblioteca sea mucho más suave y reduzca la probabilidad de encontrar problemas complejos durante la migración.

Identificar y abordar problemas transversales

Cuándo realizar este paso: Al corregir la deuda técnica, pero antes de actualizar las bibliotecas auxiliares, identifique y configure problemas transversales que afecten a toda la aplicación.

Los problemas transversales son aspectos de la aplicación que abarcan varias capas o componentes, como la autenticación, la administración de sesiones, el registro y el almacenamiento en caché. Deben abordarse al principio del proceso de migración, ya que afectan a la forma en que las aplicaciones ASP.NET Framework y ASP.NET Core se comunican y comparten el estado durante la migración incremental.

En las secciones siguientes se tratan las preocupaciones transversales más comunes. Configure solo los que se aplican a la aplicación:

Configuración de soporte técnico de sesión

Configure esto si: La aplicación ASP.NET Framework usa el estado de sesión.

Consulte la documentación general sobre la migración de sesiones para obtener instrucciones aquí.

La sesión es una característica de uso común de ASP.NET que comparte el nombre con una característica en ASP.NET Core, pero las API son muy diferentes. Al actualizar las bibliotecas que usan el estado de sesión, deberá configurar la compatibilidad con la sesión. Consulte la documentación sobre la compatibilidad con sesiones remotas para obtener instrucciones detalladas sobre cómo habilitar el uso compartido de estado de sesión entre las aplicaciones.

Configuración de autenticación

Configure esto si: La aplicación ASP.NET Framework usa la autenticación y quiere compartir el estado de autenticación entre las aplicaciones antiguas y nuevas.

Consulte la documentación general sobre la migración de autenticación para obtener instrucciones aquí.

Es posible compartir la autenticación entre la aplicación ASP.NET original y la nueva aplicación ASP.NET Core mediante la característica de autenticación remota de adaptadores System.Web. Esta característica permite que la aplicación ASP.NET Core aplaza la autenticación a la aplicación de ASP.NET original. Consulte la documentación sobre la autenticación remota para obtener más detalles.

Otras preocupaciones transversales que se deben tener en cuenta

En función de la aplicación, es posible que también tenga que abordar:

  • Registro: asegúrese de un registro coherente en ambas aplicaciones. Considere la posibilidad de usar un proveedor de registro compartido o asegurarse de que los registros se agregan correctamente.
  • Almacenamiento en caché: si la aplicación usa el almacenamiento en caché (en memoria, distribuido o almacenamiento en caché de salida), planee cómo mantener la coherencia de la caché entre las aplicaciones.
  • Manejo de errores: establezca un manejo de errores coherente e informes consistentes en las aplicaciones ASP.NET Framework y ASP.NET Core.
  • Administración de configuración: planee cómo se compartirán o administrarán las opciones de configuración entre las dos aplicaciones.
  • Monitorización de salud: configure la monitorización y las comprobaciones de salud de ambas aplicaciones durante el proceso de migración.
  • Dependency Injection: Si utiliza un contenedor de DI en su aplicación ASP.NET Framework, planifique la migración al contenedor de DI integrado de ASP.NET Core.

Actualización de bibliotecas auxiliares

Cuándo realizar este paso: Solo cuando necesite migrar rutas específicas que dependan de bibliotecas de clases que contengan lógica de negocios, deberá compartir entre las aplicaciones antiguas y nuevas.

Note

Enfoque incremental: con el proceso de migración incremental, no es necesario actualizar todas las bibliotecas auxiliares a la vez. Solo tiene que actualizar las bibliotecas necesarias para las rutas específicas que está migrando en el momento. Esto le permite abordar la migración en piezas más pequeñas y manejables.

Proceso de actualización de biblioteca

Important

Las bibliotecas de soporte deben actualizarse en un orden de equilibrio de carga en profundidad posterior a la ordenación. Esto significa lo siguiente:

  1. Comience con las dependencias de hoja: comience con bibliotecas que no tengan dependencias de otras bibliotecas en su solución.
  2. Trabajar hacia arriba a través del árbol de dependencias: actualice solo una biblioteca después de que todas sus dependencias se hayan actualizado correctamente.
  3. Fin con la aplicación principal: la aplicación principal de ASP.NET Framework debe ser el último elemento que se va a modificar.

Esta ordenación es esencial porque:

  • Garantiza que, al actualizar una biblioteca, todas sus dependencias ya son compatibles.
  • Evita problemas de dependencia circular durante el proceso de actualización.
  • Permite probar cada biblioteca de forma independiente antes de pasar a sus dependientes.

NOTA: Solo debe seguir este orden para el subconjunto de bibliotecas requeridas por las rutas que está migrando en este momento, no toda su solución.

Proceso de actualización para cada biblioteca:

Si tiene bibliotecas auxiliares en la solución que necesitará usar para las rutas que va a migrar, deben actualizarse a .NET Standard 2.0, si es posible. La modernización de aplicaciones Copilot de GitHub puede ayudarle con esto. Si las bibliotecas no pueden tener como destino .NET Standard, puede tener como destino .NET 8 o posterior junto con el destino de .NET Framework en el proyecto original o en un nuevo proyecto junto con el original.

Los adaptadores System.Web se pueden usar en estas bibliotecas para habilitar compatibilidad con HttpContext en bibliotecas de clases. Para habilitar HttpContext el uso en una biblioteca:

  1. Quitar referencia a System.Web en el archivo del proyecto
  2. Agregar el Microsoft.AspNetCore.SystemWebAdapters paquete
  3. Habilite varios destinos y agregue un destino de .NET 8 o posterior, o bien convierta el proyecto en .NET Standard 2.0.

Este paso puede requerir que varios proyectos cambien en función de la estructura de la solución y de las rutas que va a migrar. La modernización de aplicaciones copilot de GitHub puede ayudarle a identificar cuáles necesitan cambiar y automatizar una serie de pasos en el proceso.

Pasos siguientes

Una vez que haya completado los pasos de configuración y actualización de la biblioteca anteriores:

  1. Comienza de manera pequeña: migrando primero puntos de conexión simples y sin estado
  2. Prueba exhaustiva: asegúrese de que cada componente migrado funciona correctamente en ambos entornos.
  3. Supervisión del rendimiento: observe los impactos en el rendimiento de la configuración del proxy.
  4. Iteración: continuar migrando componentes de forma incremental hasta que se complete la migración