Diferencias entre .NET y .NET Framework en cuanto a aplicaciones de servidor

Existen dos implementaciones de .NET admitidas para compilar aplicaciones del lado servidor.

Implementación Versiones incluidas
.NET .NET Core 1.0 - 3.1, .NET 5 y versiones posteriores de .NET.
.NET Framework .NET Framework 1.0 - 4.8

Las dos comparten muchos de los mismos componentes y es posible compartir código entre ellas. Sin embargo, hay diferencias fundamentales entre los dos y su elección depende de lo que quiera lograr. En este artículo se proporcionan orientaciones sobre cuándo usar cada una.

Use .NET para la aplicación de servidor cuando:

  • Tenga necesidades multiplataforma.
  • Tenga los microservicios como objetivo.
  • Vaya a usar contenedores de Docker.
  • Necesite sistemas escalables y de alto rendimiento.
  • Necesite versiones de .NET en paralelo por aplicación.

Use .NET Framework para su aplicación de servidor cuando:

  • La aplicación usa actualmente .NET Framework (la recomendación es extender en lugar de migrar).
  • La aplicación usa bibliotecas de terceros o paquetes NuGet que no están disponibles para .NET.
  • La aplicación usa tecnologías de .NET Framework que no están disponibles para .NET.
  • La aplicación usa una plataforma que no es compatible con .NET.

Cuándo elegir .NET

En las secciones siguientes se explican de manera más detallada las razones indicadas anteriormente para elegir .NET en vez de .NET Framework.

Necesidades multiplataforma

Si la aplicación web o de servicio debe ejecutarse en varias plataformas, por ejemplo, Windows, Linux y macOS, use .NET.

.NET admite los sistemas operativos mencionados anteriormente como estación de trabajo de desarrollo. Visual Studio proporciona un entorno de desarrollo integrado (IDE) para Windows y macOS. También puede usar Visual Studio Code, que se ejecuta en macOS, Linux y Windows. Visual Studio Code es compatible con .NET, incluidos IntelliSense y la depuración. La mayoría de los editores de terceros, como Sublime, Emacs y VI, funcionan con .NET. Estos editores de terceros obtienen el editor de IntelliSense mediante Omnisharp. También puede evitar cualquier editor de código y usar directamente la CLI de .NET, que está disponible para todas las plataformas compatibles.

Arquitectura de microservicios

Una arquitectura de microservicios permite una combinación de tecnologías en un límite de servicio. Esta combinación de tecnología permite un adopción gradual de .NET para los microservicios nuevos que funcionan con otros servicios o microservicios. Por ejemplo, puede combinar microservicios o servicios desarrollados con .NET Framework, Java, Ruby u otras tecnologías monolíticas.

Existen muchas plataformas de infraestructura. Azure Service Fabric está diseñada para sistemas de microservicios grandes y complejos. Azure App Service es una buena elección para microservicios sin estado. Las alternativas de microservicios basadas en Docker se ajustan a cualquier enfoque de microservicios, como se explica en la sección Contenedores . Todas estas plataformas admiten .NET, lo que hace que resulten perfectas para hospedar microservicios.

Para obtener más información sobre la arquitectura de microservicios, consulte .NET Microservices. Architecture for Containerized .NET Applications (Microservicios de .NET: Arquitectura para aplicaciones .NET en contenedor).

Contenedores

Los contenedores se usan normalmente con una arquitectura de microservicios. Los contenedores también se pueden usar para incluir las aplicaciones web o los servicios en contenedores que sigan cualquier patrón de arquitectura. .NET Framework se puede usar en contenedores de Windows. Aun así, la modularidad y la naturaleza ligera de .NET hacen que sea una mejor opción para los contenedores. Al crear e implementar un contenedor, el tamaño de su imagen es mucho menor con .NET que con .NET Framework. Dado que es multiplataforma, puede implementar aplicaciones de servidor en contenedores de Docker de Linux.

Los contenedores de Docker se pueden hospedar en su propia infraestructura de Linux o Windows o en un servicio en la nube, como Azure Kubernetes Service. Azure Kubernetes Service puede administrar, organizar y escalar aplicaciones basadas en contenedores en la nube.

Sistemas escalables y de alto rendimiento

Cuando el sistema necesite el mejor rendimiento y escalabilidad posibles, .NET y ASP.NET Core son las mejores opciones. El entorno de ejecución del servidor de alto rendimiento para Windows Server y Linux hace que ASP.NET Core un marco web de alto rendimiento en las pruebas comparativas de TechEmpower.

El rendimiento y la escalabilidad son especialmente relevantes para las arquitecturas de microservicios, donde se pueden ejecutar cientos de microservicios. Con ASP.NET Core, los sistemas se ejecutan con un número mucho menor de servidores/máquinas virtuales. Los servidores y máquinas virtuales reducidos ahorran costos en la infraestructura y el hospedaje.

Versiones de .NET en paralelo por nivel de aplicación

Para instalar aplicaciones con dependencias en otras versiones de .NET, se recomienda .NET. Esta implementación admite la instalación en paralelo de diferentes versiones del entorno de ejecución de .NET en la misma máquina. La instalación en paralelo permite varios servicios en el mismo servidor, cada uno en su propia versión de .NET. También reduce los riesgos y ahorra dinero en las operaciones de TI y las actualizaciones de aplicaciones.

La instalación en paralelo no es posible con .NET Framework. Se trata de un componente de Windows, y solo puede existir una versión en un equipo a la vez. Cada versión de .NET Framework reemplaza la anterior. Si instala una nueva aplicación destinada a una versión posterior de .NET Framework, es posible que interrumpa las aplicaciones existentes que se ejecutan en el equipo porque se ha reemplazado la versión anterior.

Cuándo elegir .NET Framework

.NET ofrece ventajas significativas para las aplicaciones nuevas y los patrones de aplicación. Pero .NET Framework sigue siendo la opción natural para muchos escenarios existentes y, por tanto, no se reemplaza por .NET para todas las aplicaciones de servidor.

Aplicaciones actuales de .NET Framework

En la mayoría de los casos, no tendrá que migrar las aplicaciones existentes a .NET. En su lugar, se recomienda usar .NET a medida que extiende una aplicación existente, como escribir un nuevo servicio web en ASP.NET Core.

Bibliotecas de terceros o paquetes NuGet no disponibles para .NET

.NET Standard permite compartir código entre todas las implementaciones de .NET, incluidos .NET Core/5+. Con .NET Standard 2.0, un modo de compatibilidad permite que los proyectos de .NET Standard y .NET hagan referencia a bibliotecas de .NET Framework. Para obtener más información, vea Compatibilidad con las bibliotecas de .NET Framework.

Tendrá que utilizar .NET Framework solo cuando en las bibliotecas o los paquetes NuGet se usen tecnologías que no estén disponibles en .NET Standard o .NET.

Tecnologías de .NET Framework no disponibles para .NET

Algunas tecnologías de .NET Framework no están disponibles en .NET. En la lista siguiente se muestran las tecnologías más comunes que no se encuentran en .NET:

  • ASP.NET Web Forms aplicaciones: ASP.NET Web Forms solo están disponibles en .NET Framework. ASP.NET Core no se puede usar para ASP.NET Web Forms.

  • ASP.NET Web Pages aplicaciones: ASP.NET Web Pages no se incluyen en ASP.NET Core.

  • Servicios relacionados con flujos de trabajo: Windows Workflow Foundation (WF), Servicios de flujo de trabajo (WCF + WF en un solo servicio) y WCF Data Services (anteriormente conocido como "ADO.NET Data Services") solo están disponibles en .NET Framework.

  • Compatibilidad con lenguajes: Visual Basic y F# se admiten actualmente en .NET, pero no para todos los tipos de proyecto. Para obtener una lista de plantillas de proyecto compatibles, consulte Opciones de plantilla para dotnet new.

Para obtener más información, vea Tecnologías de .NET Framework no disponibles en .NET.

Plataformas no compatibles con .NET

Algunas plataformas de terceros o de Microsoft no son compatibles con .NET. Algunos servicios de Azure proporcionan un SDK que todavía no está disponible para su consumo en .NET. En esos casos, puede usar la API REST equivalente en lugar del SDK de cliente.

Vea también