Microsoft en su intento por estandarizar todo el conjunto de herramientas, componentes y librerías -y con miras a hacerse más flexible para los desarrolladores que la hemos escogido como plataforma- decidió, a lo largo de los últimos años, crecer la familia .NET. La revolución digital ha llegado a tal punto, que se ha vuelto un poco complejo saber o identificar los beneficios y/o perjuicios de un integrante de la familia del otro en los proyectos.
Con esto me refiero a que nosotros, los desarrolladores en Visual Studio .NET, debemos saber: ¿Que significa .NET Framework?, ¿.NET Standard?, ¿.NET Core?, ¿Qué es .NET “Solito” ?, y demás nombres que no sabemos si son hijos, primos, tíos o tal vez lo mismo.
¿En qué versión está .NET Framework? o ¿en qué versión esta .NET Core? Tenemos un nudo en la cabeza con todo esto, gracias a Microsoft 😉.
Un poco de historia:
.NET Framework nació hacia el 2002, con el propósito de construir aplicaciones Windows y web, únicamente sobre sistemas operativos Windows. En ese entonces, permitía escribir el código fuente en 3 diferentes lenguajes como C#, Visual Basic y F#. Este código escrito se compilaba en un lenguaje intermedio, generando las famosas dlls o archivos .exe, que luego en interacción con el CLR tomara para su procesamiento.
Luego del boom de los PaaS y los SaaS, y en general todo lo que tiene que ver con el computo en la nube, contenerización, juegos, IoT, AI, entre otros; utilizando diferentes plataformas, se vio la necesidad de hacer un producto que cumpliera con estos requisitos del mercado. Esa es una de las razones principales por las que existe .Net Core. Debido a la demanda de tecnologías multiplataforma, .NET Framework dejó de ser una opción aceptable, ya que estaba directamente enlazado con tecnologías Windows.
.Net Core es un “Framework” nuevo, tomando como base la esencia de .Net Framework, pero permitiendo desplegar sus aplicaciones en múltiples plataformas como Linux, MacOs y obviamente Windows. Además, también logra montar sus componentes en un contenedor, como por ejemplo Docker. Con .NET Framework también se puede hacer, pero sería una imagen muy pesada, únicamente aplicaría para imágenes con SO Windows y serían aplicaciones que no utilicen estados de sesión.
De ahí surgió también el nombre .NET Standard. ¿Con este serían tres integrantes de esta familia que podríamos tomar como alternativas para crear una aplicación en .NET?; algo complejo, ¿no?
Pues, no. Microsoft tomó la decisión de llamar .NET Standard a una especificación que utiliza una serie de APIs para que cualquier proyecto desarrollado en .NET Framework, .NET Core, Xamarin “.NET MAUI” (otro integrante de la familia para móviles), entre otros; puedan reutilizarlo; solo a nivel de librerías, ya que, por ejemplo, aplicaciones de escritorio (WinForms) o en WPF, sí o sí pertenecen a .Net Framework.
Igualmente, sigue la confusión con los nombres y las versiones de cada uno, porque ahora vemos que existe .NET “Solito”, especificando la versión como: .NET 5 o .NET 6. Estos son, al final, el acumulado de todos los integrantes de la familia .NET. Así mismo, para seguir evitando confusiones entre .NET Framework y .NET Core, debido a las versiones mayores, Microsoft decidió que .NET Core 3.1 evolucionaría hacia .NET 5, y para las versiones de .NET Framework mantener hasta la versión 4.8. Entonces, de ahora en adelante, solo hablaremos de .NET versión X, que reunirá todas las características para los diferentes tipos de proyectos (WinForms, WPF, Web, móvil).
Con esto no se debe asumir que .NET Framework no se volverá a utilizar, ya que su dependencia esta altamente acoplada con el ciclo de vida de Windows como sistema operativo. Se dejará de usar para “nuevas aplicaciones”, pero quedan las aplicaciones legadas, que han sido construidas y que posiblemente requieran controles de cambios en el futuro.