Diferencias entre .NET y .NET Framework en cuanto a aplicaciones de servidor
Hay dos implementaciones de .NET admitidas para compilar aplicaciones del lado servidor: .NET y .NET Framework. La versión más reciente de .NET (actualmente .NET 8) es la versión preferida de .NET que se usará para el desarrollo del servidor. Las razones para seguir usando .NET Framework son específicas y limitadas.
Implementación | Versiones incluidas |
---|---|
.NET | .NET Core 1.0 - 3.1 .NET 5 y versiones posteriores. |
.NET Framework | .NET Framework 1.0 - 4.8 |
Elección de .NET
.NET tiene las siguientes ventajas para las aplicaciones de servidor:
Funciona entre plataformas.
.NET permite a la aplicación web o de servicio ejecutarse en varias plataformas, por ejemplo, Windows, Linux y macOS. También puede usar cualquiera de estos sistemas operativos como estación de trabajo de desarrollo. Use el entorno de desarrollo integrado (IDE) de Visual Studio en Windows o utilice Visual Studio Code en macOS, Linux o Windows. Visual Studio Code admite 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 omitir el editor de código y usar directamente la CLI de .NET.
Le permite definir 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. Los microservicios alternativos basados en Docker encajan en cualquier enfoque de microservicios, como se explica en la sección siguiente (admite contenedores de Docker). Todas estas plataformas admiten .NET, lo que hace que resulten perfectas para hospedar microservicios.
Para más información sobre la arquitectura de microservicios, consulte Microservicios de .NET: Arquitectura para aplicaciones .NET en contenedor.
Admite contenedores de Docker.
Los contenedores se usan normalmente junto 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. Aunque .NET Framework se puede usar en contenedores de Windows, la naturaleza modular y ligera de .NET la convierten en una mejor elección para los contenedores. Al crear e implementar un contenedor, el tamaño de su imagen es mucho más pequeño con .NET que con .NET Framework. Como es multiplataforma, puede implementar aplicaciones de servidor en contenedores de Docker de Linux.
Puede hospedar los contenedores de Docker 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.
Es de alto rendimiento y escalable.
Cuando el sistema necesite el mejor rendimiento y escalabilidad posibles, .NET y ASP.NET Core son las mejores opciones. El entorno de ejecución de servidor de alto rendimiento para Windows Server y Linux convierte a ASP.NET Core en un marco web de gran rendimiento en los bancos de pruebas de TechEmpower.
El rendimiento y la escalabilidad son especialmente importantes para las arquitecturas de microservicios, donde podrían estarse ejecutando cientos de microservicios. Con ASP.NET Core, los sistemas se ejecutan con un número mucho menor de servidores o máquinas virtuales, lo que ahorra costos en la infraestructura y el hospedaje.
Admite versiones de .NET en paralelo por aplicación.
La implementación .NET admite la instalación en paralelo de otras versiones del entorno de ejecución de .NET en la misma máquina. Esta capacidad 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. Es un componente de Windows y solo puede haber una versión en un equipo a la vez: cada versión de .NET Framework reemplaza a la anterior. Si instala una aplicación nueva que tenga como destino una versión posterior de .NET Framework, es posible que se interrumpan las aplicaciones existentes que se ejecutan en la máquina, ya que se ha reemplazado la versión anterior.
Es más seguro.
Cuándo elegir .NET Framework
Como se mencionó anteriormente, la implementación de .NET ofrece ventajas significativas para las nuevas aplicaciones y patrones de aplicación. Sin embargo, en algunos escenarios específicos, es posible que tenga que usar .NET Framework para las aplicaciones de servidor y .NET Framework seguirá siendo compatible. Use .NET Framework para su aplicación de servidor cuando:
La aplicación utiliza .NET Framework en este momento.
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 al escribir un nuevo servicio web en ASP.NET Core.
La aplicación usa bibliotecas de terceros o paquetes NuGet que no están disponibles para .NET.
.NET Standard permite compartir código entre todas las implementaciones de .NET, incluido .NET 6+. 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.
Solo debe usar .NET Framework cuando las bibliotecas o paquetes NuGet usen tecnologías que no están disponibles en .NET Standard o .NET.
La aplicación usa tecnologías de .NET Framework que no están 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:
- Aplicaciones de ASP.NET Web Forms: ASP.NET Web Forms solo está disponible en .NET Framework. No se puede usar ASP.NET Core para ASP.NET Web Forms.
- Aplicaciones de ASP.NET Web Pages: ASP.NET Web Pages no se incluye en ASP.NET Core.
- Servicios relacionados con flujos de trabajo: Windows Workflow Foundation (WF), Workflow Services (WCF + WF en un único 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 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.
La aplicación usa una plataforma que no es compatible 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.