dotnet-framework-core-y-standard

.NET Framework, Core y Standard

Una de las cosas que más confunden a la gente al hablar de .NET es entender los distintos tipos de .NET que existen.

Para tener una versión un pelín más larga, consultad la entrada sobre “Historia de C#“. Pero en resumen, .NET al principio era .NET Framework.

En cierto momento a Microsoft le dio por hacerse “grachiocho” 🤡 y dividir .NET en partes, para hacerlo multiplataforma. Eso lio bastante las cosas, así que lo volvieron a unificar en .NET (a secas).

Así que tenemos:

  • .NET Framework, el clásico (con sabor original)
  • .NET Core y .NET Standard, el experimento fallido
  • .NET la reunificación moderna

Vamos a verlos un poco más en profundidad 👇.

.NET Framework

.NET Framework es la implementación original de .NET lanzada por Microsoft en 2002, principalmente para desarrollar aplicaciones de escritorio y web en Windows.

La implementación de .NET Framework incluye una máquina virtual, el CLR, que ejecuta aplicaciones en un entorno de ejecución controlado.

Además, incluye un gran número de bibliotecas, acceso a datos (ADO.NET), servicios web (WCF), desarrollar aplicaciones web (ASP.NET) y aplicaciones de escritorio (WinForms, WPF).

.NET Framework está diseñado exclusivamente para Windows, lo cual significa que las aplicaciones desarrolladas con él no pueden ejecutarse de manera nativa en otros sistemas operativos.

.NET Core y Standard

Aquí es donde Microsoft piensa potenciar .NET para hacerlo multiplataforma. Básicamente la idea fue que hay “muchas cosas” que se hacen igual en todas las plataformas.

Por ejemplo, un librería que hace funciones matemáticas, eso se va a ejecutar en todas las plataformas igual. Así que todas esas bibliotecas se pueden “sacar” a una zona común, que llamamos .NET Standard.

Las cosas que dependen del Sistema Operativo (por ejemplo, como gestionar los ficheros), son las que terminen de hacer la implementación. Y estas se les llamo “Core”

.NET Core

.NET Core es una versión multiplataforma y de código abierto del ecosistema .NET, lanzada por primera vez en 2016. Venia pensado para sustituir .NET Framework.

La principal idea tras .NET Core era poderse ejecutar en múltiples sistemas operativos. Así, podrías tener tu misma App en Windows, Linux, Mac, iOS, Android, etc.

Al ser open-source, permite a la comunidad contribuir y mejorar la plataforma, y se pueden ver y auditar sus actualizaciones directamente en GitHub.

.NET Standard

.NET Standard no es una plataforma o implementación (como .NET Framework o .NET Core), sino una especificación de API. Es decir, definen .NET Standard define un conjunto de APIs que cualquier implementación de .NET debe cumplir.

Su objetivo es proporcionar una manera de crear bibliotecas de clases que puedan ejecutarse en múltiples plataformas .NET sin necesidad de ser reescritas para cada una.

¿Iba a salir eso bien a la primera? Pues ya os digo yo que no. Porque también hay diferentes versiones de .NET Standard. Aquí os dejo un resumen de la compatibilidad de cada una.

API disponibles: 7.949 of 37.118 (21,4%)

Implementación de .NETSoporte de versión
.NET y .NET Core✅ 1.0
.NET Framework✅ 4.5
Mono✅ 4.6
Xamarin.Android✅ 7.0
Xamarin.iOS✅ 10.0
Plataforma Universal de Windows (UWP)✅ 8.0
Unity✅ 2018.1

API disponibles: 10.239 of 37.118 (27,6%)

Implementación de .NETSoporte de versión
.NET y .NET Core✅ 1.0
.NET Framework✅ 4.5
Mono✅ 4.6
Xamarin.Android✅ 7.0
Xamarin.iOS✅ 10.0
Plataforma Universal de Windows (UWP)✅ 8.0
Unity✅ 2018.1

API disponibles: 10.285 of 37.118 (27,7%)

Implementación de .NETSoporte de versión
.NET y .NET Core✅ 1.0
.NET Framework🟡 4.5.1
Mono✅ 4.6
Xamarin.Android✅ 7.0
Xamarin.iOS✅ 10.0
Plataforma Universal de Windows (UWP)🟡 8.1
Unity✅ 2018.1

API disponibles: 13.122 of 37.118 (35,4%)

Implementación de .NETSoporte de versión
.NET y .NET Core✅ 1.0
.NET Framework🟠 4.6
Mono✅ 4.6
Xamarin.Android✅ 7.0
Xamarin.iOS✅ 10.0
Plataforma Universal de Windows (UWP)🟠 10.0
Unity✅ 2018.1

API disponibles: 13.140 of 37.118 (35,4%)

Implementación de .NETSoporte de versión
.NET y .NET Core✅ 1.0
.NET Framework✅ 4.5
.NET Framework🟠 4.6.1
Xamarin.Android✅ 7.0
Xamarin.iOS✅ 10.0
Plataforma Universal de Windows (UWP)🟠 10.0
Unity✅ 2018.1

API disponibles: 13.355 of 37.118 (36,0%)

Implementación de .NETSoporte de versión
.NET y .NET Core✅ 1.0
.NET Framework🟠 4.6.1
Mono✅ 4.6
Xamarin.Android✅ 7.0
Xamarin.iOS✅ 10.0
Plataforma Universal de Windows (UWP)🟠 10.0.16299
Unity✅ 2018.1

API disponibles: 13.501 of 37.118 (36,4%)

Implementación de .NETSoporte de versión
.NET y .NET Core✅ 1.0
.NET Framework🟠 4.6.1
Mono✅ 4.6
Xamarin.Android✅ 7.0
Xamarin.iOS✅ 10.0
Plataforma Universal de Windows (UWP)🟠 10.0.16299
Unity✅ 2018.1

API disponibles: 32.638 of 37.118 (87,9%)

Implementación de .NETSoporte de versión
.NET y .NET Core🟠 2.0
.NET Framework🟠 4.6.1
Mono🟠 5.4
Xamarin.Android🟠 8.0
Xamarin.iOS🟠 10.14
Plataforma Universal de Windows (UWP)🟠 10.0.16299
Unity✅ 2018.1

API disponibles: 37.118 of 37.118 (100%)

Implementación de .NETSoporte de versión
.NET y .NET Core🟠 3.0
.NET Framework
Mono🟠 6.4
Xamarin.Android🟠 10.0
Xamarin.iOS🟠 12.16
UWP
Unity🟠 2021.2
  • Cuanto mayor es la versión Standard, más APIs (funcionalidades) tiene
  • Pero pierde compatibilidad con versiones anteriores a la que pongo

Si tenéis que usar .NET Standard, la version 2.0 es la que mejor compromiso os da entre funcionalidades y compatibilidad

.NET

Como ya he dicho, lo anterior “salió regulin”. Así que en se decidió reunificarlo en .NET (a secas). Desde la versión .NET 5 y versiones sucesivas, se ha unido el ecosistema .NET en una sola plataforma.