Cuándo elegir .NET Framework para contenedores de Docker

Sugerencia

Este contenido es un extracto del libro electrónico, ".NET Microservices Architecture for Containerized .NET Applications" (Arquitectura de microservicios de .NET para aplicaciones de .NET contenedorizadas), disponible en Documentación de .NET o como un PDF descargable y gratuito que se puede leer sin conexión.

.NET Microservices Architecture for Containerized .NET Applications eBook cover thumbnail.

Mientras que .NET 8 ofrece ventajas significativas para las aplicaciones nuevas y los patrones de aplicación, .NET Framework continuará siendo una buena elección para muchos escenarios existentes.

Migrar aplicaciones existentes directamente a un contenedor de Windows Server

Puede usar los contenedores de Docker simplemente para simplificar la implementación, incluso si no va a crear microservicios. Por ejemplo, es posible que quiera mejorar el flujo de trabajo de DevOps con Docker; los contenedores pueden proporcionarle entornos de prueba mejor aislados y también pueden eliminar los problemas de implementación causados por las dependencias que faltan al moverse a un entorno de producción. En estos casos, incluso si está implementando una aplicación monolítica, tiene sentido usar contenedores de Windows y Docker para las aplicaciones de .NET Framework actuales.

En la mayoría de los casos en este escenario, no deberá migrar las aplicaciones existentes a .NET 8; puede usar los contenedores de Docker que incluyen la versión tradicional de .NET Framework. Pero un enfoque recomendado es usar .NET 8 al extender una aplicación existente, como escribir un servicio nuevo en ASP.NET Core.

Uso de bibliotecas de .NET de terceros o paquetes NuGet no disponibles para .NET 8

Las bibliotecas de terceros están adoptando rápidamente .NET Standard, que permite el uso compartido de código entre todos los tipos .NET, entre ellos .NET 8. Con .NET Standard 2.0 y versiones posteriores, la compatibilidad de la superficie de API entre diferentes marcos ahora es mayor. Y no solo eso, pues las aplicaciones de .NET Core 2.x y versiones más recientes también pueden hacer referencia directamente a las bibliotecas de .NET Framework existentes. (Consulte .NET Framework 4.6.1 compatible con .NET Standard 2.0).

Además, el paquete de compatibilidad de Windows amplía la superficie de API disponible para .NET Standard 2.0 en Windows. Este paquete permite volver a compilar la mayoría del código existente para .NET Standard 2.x con poca o ninguna modificación para ejecutarse en Windows.

Sin embargo, incluso con ese avance excepcional desde .NET Standard 2.0 y .NET Core 2.1 o versiones posteriores, puede haber casos en los que ciertos paquetes NuGet necesiten Windows para ejecutarse, y puede que no admitan .NET Core o versiones posteriores. Si los paquetes son críticos para la aplicación, entonces debe usar .NET Framework en los contenedores de Windows.

Uso de tecnologías de .NET no disponibles para .NET 8

Algunas tecnologías de .NET Framework no están disponibles en .NET 8. Es posible que algunas estén disponibles en versiones posteriores de .NET Core, pero otras no se adaptan a los nuevos patrones de aplicaciones a los que se dirige .NET Core y puede que nunca estén disponibles.

En la lista siguiente se muestra la mayoría de las tecnologías que no están disponibles en .NET 8:

  • ASP.NET Web Forms. Esta tecnología solo está disponible en .NET Framework. Actualmente no está previsto migrar ASP.NET Web Forms a .NET o versiones posteriores.

  • Servicios relacionados con el flujo de trabajo. Windows Workflow Foundation (WF), Workflow Services (WCF + WF en un único servicio) y WCF Data Services (antes conocido como ADO.NET Data Services) solo están disponibles en .NET Framework. Actualmente no existen planes para incluirlos en .NET 8.

Además de las tecnologías indicadas en la guía básica de .NET oficial, se pueden portar otras características a la nueva plataforma unificada de .NET. Puede interesarle participar en las discusiones en GitHub para que su voz pueda ser escuchada. Asimismo, si piensa que falta algo, registre un nuevo problema en el repositorio de GitHub de dotnet/runtime.

Uso de una plataforma o API no compatible con .NET 8

Algunas plataformas de terceros y de Microsoft no son compatibles con .NET 8. Por ejemplo, algunos servicios de Azure proporcionan un SDK que aún no está disponible para su consumo en .NET 8. La mayoría de los SDK de Azure se portarán finalmente a .NET 8/.NET Standard, pero puede que, por varios motivos, no sea el caso para algunos. Puede ver los SDK de Azure disponibles en la página Versiones más recientes del SDK de Azure.

Mientras tanto, si alguna plataforma o servicio en Azure todavía no es compatible con .NET 8 con la API de cliente, puede usar la API REST equivalente del servicio de Azure o el SDK de cliente en .NET Framework.

Migración de aplicaciones de ASP.NET existentes a .NET 8

.NET Core es un paso adelante revolucionario con respecto a .NET Framework. Ofrece una serie de ventajas respecto a .NET Framework en todos los ámbitos, desde la productividad hasta el rendimiento, pasando por la compatibilidad multiplataforma hasta la satisfacción de los desarrolladores.

Recursos adicionales