Migración de ASP.NET Framework 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 esta guía se proporcionan enfoques y herramientas prácticos para actualizar aplicaciones de ASP.NET Framework a ASP.NET Core con el menor cambio posible.

Por qué la migración es difícil

La migración de ASP.NET Framework a ASP.NET Core implica varios desafíos complejos que dificultan la reescritura completa y corren el riesgo de la mayoría de las aplicaciones de producción:

Acumulación de deuda técnica

Las aplicaciones de producción suelen acumular deuda técnica a lo largo de años de desarrollo:

  • Dependencias de System.Web - El uso generalizado de HttpContext y los tipos asociados a lo largo de una base de código.
  • Dependencias de paquetes obsoletas que podrían no tener equivalentes compatibles modernos.
  • Herramientas de compilación heredadas y configuraciones de proyecto que no son compatibles con .NET modernas.
  • Uso de API en desuso que debe reemplazarse por alternativas modernas.
  • Advertencias del compilador y problemas de calidad del código que complican la migración.

Intereses transversales

Muchas aplicaciones tienen preocupaciones transversales que abarcan varias capas y necesitan una coordinación cuidadosa durante la migración:

  • Administración de estado de sesión: ASP.NET Framework y ASP.NET Core tienen comportamientos y API de sesión fundamentalesmente diferentes.
  • Autenticación y autorización : diferentes modelos de autenticación y API entre marcos.
  • Registro y supervisión : es necesario mantener un registro coherente en ambas aplicaciones durante la migración.
  • Estrategias de almacenamiento en caché : el almacenamiento en caché en memoria, distribuido o de salida debe mantenerse de forma coherente.
  • Control de errores: establecimiento de patrones de control de errores coherentes en ambas aplicaciones.
  • Administración de configuración : administración de opciones que deben compartirse o sincronizarse entre aplicaciones.
  • Inyección de dependencias - Migración de varios contenedores de DI al contenedor integrado de ASP.NET Core.

El patrón de host genérico puede ayudar a abordar varios de estos problemas al incorporar la infraestructura moderna de .NET a las aplicaciones de ASP.NET Framework. Para obtener más información, consulte Host genérico de .NET en ASP.NET Framework.

Cadenas de dependencias de biblioteca

Las bibliotecas auxiliares suelen tener relaciones de dependencia complejas que requieren un orden de actualización cuidadoso:

  • Complejidad del árbol de dependencias: debe actualizar las bibliotecas siguiendo el orden de búsqueda en profundidad en orden post.
  • Requisitos de compatibilidad múltiple : las bibliotecas deben admitir todas las versiones del marco de trabajo dirigidas a la aplicación.
  • Compatibilidad de API : garantizar que las bibliotecas funcionen con ambas versiones del marco durante el período de migración.
  • Complejidad de las pruebas : cada actualización de biblioteca requiere pruebas exhaustivas para garantizar la compatibilidad.

Diferencias en la arquitectura de la aplicación

Las diferencias fundamentales entre ASP.NET Framework y ASP.NET Core crean desafíos adicionales:

  • Modelos de hospedaje : diferentes enfoques para el hospedaje de aplicaciones y la administración del ciclo de vida
  • Canalización de Middleware: pasar de módulos y controladores HTTP a middleware
  • Procesamiento de solicitudes : diferentes modelos y contextos de procesamiento de solicitudes
  • Características de rendimiento : diferentes patrones de uso de memoria y perfiles de rendimiento

Estos desafíos hacen que la migración incremental sea el enfoque preferido para la mayoría de las aplicaciones de producción. Este enfoque permite a los equipos abordar estos problemas gradualmente mientras se mantiene una aplicación de trabajo en producción.

Para obtener documentación sobre las áreas importantes que han cambiado, consulte los temas asociados disponibles en Escenarios de migración complejos: áreas de análisis en profundidad.

Comience aquí: Elija la ruta de migración.

Puede migrar con éxito su aplicación de ASP.NET Framework a ASP.NET Core. La clave es elegir el enfoque adecuado para su situación específica.

Tip

Independientemente de la ruta de acceso que elija, el agente de modernización de GitHub aplicación Copilot puede evaluar la solución, generar un plan de actualización y automatizar muchos de los pasos de migración. Para obtener más información, consulte Aprenda a actualizar de ASP.NET MVC, API web y Formularios web a ASP.NET Core.

Guía de decisión rápida

Responda a estas preguntas para elegir su enfoque:

  1. ¿Cuál es la escala de tiempo y la tolerancia al riesgo?

  2. ¿Qué tamaño tiene la aplicación?

  3. ¿Tiene dependencias complejas?

Migración incremental

La migración incremental es una implementación del patrón Strangler Fig. Es mejor para proyectos más grandes o para proyectos que deban permanecer en producción durante una migración. Para empezar a migrar una aplicación de forma incremental, consulte Introducción a la migración incremental de ASP.NET a ASP.NET Core.

Migración in situ

La migración local puede funcionar para aplicaciones suficientemente pequeñas. Si es posible, este enfoque permite un reemplazo rápido de la aplicación. Sin embargo, los problemas pequeños pueden complicarse si decide realizar una migración local. Para obtener información sobre las opciones de herramientas de migración, consulte Learn to upgrade from ASP.NET MVC, Web API and Web Forms to ASP.NET Core (Aprender a actualizar de ASP.NET MVC, WEB API y Web Forms a ASP.NET Core).