Dentro de poco, en noviembre de este año, .Net 5 pasara a GA (general availability) y esto va a suponer un gran cambio en el ecosistema .Net, que no todo el mundo esta terminado de entender.
El otro día me topé con el siguiente Tweet que no tiene desperdicio:
Cómo el mismo menciona en la conversación creada, Microsoft no lo ha puesto fácil, así que me he puesto a revisar la documentación y roadmap para intentar resumir esto un poco.
Vamos a ver cada una de las versiones del framework y a intentar explicar esto un poco.
Ojo, no confundir los frameworks o implantaciones de .Net con los lenguajes (que alguna vez me lo he encontrado). C# es el lenguaje y .Net Core es el framework (por poner un ejemplo).
.Net Framework vs .Net Core & .Net Standard
.Net Framework, que también lo he leído en algunos sitios como .Net Full Framework, es el framework de desarrollo de Microsoft para crear aplicaciones Windows y es la implantación original de .Net.
Por el contrario, .Net Core es una implantación multi-plataforma de .Net (además de otras cosas que veremos un poco más adelante).
.Net Standard es una especificación para que la API de .Net pueda ser usada por las distintas implementaciones. Es, por así decirlo, una Interfaz. Esto esta muy bien explicado aquí: https://github.com/dotnet/standard/blob/master/docs/metaphor.md
Cada nueva versión de .Net Standard implementa la anterior y añade la nueva funcionalidad:
Resumiendo, nos encontramos con dos implementaciones de .Net (.Net Framework y .Net Core) y con una especificación (.Net Standard).
Si estas empezando en esto, te puedes preguntar entonces, ¿si .Net Framework ya es una implantación de .Net, que además es muy madura y lleva la tira de años y versiones, por que tanto lío con .Net Core? Hay unos cuantos motivos por lo que MS ha creado Core, voy a comentar las que considero mas interesantes.
.Net Core es un lenguaje creado de cero, diseñado para adaptarse a los nuevos tiempos y ser:
- Open Source (https://en.wikipedia.org/wiki/.NET_Framework#Licensing)
- Modular, al contrario que .Net Framework que es un monolito, con Core añades solo los módulos necesarios a través de Nuget. Esto quiere decir que cada paquete tiene su «propia vida».
- Es multi-plataforma, como he comentado anteriormente.
- Es más rápido ya que ha sido diseñado con el rendimiento como algo prioritario.
Futuro de la plataforma
La última versión de de .Net Framework será la 4.8, por lo que a partir de ese momento dejará de evolucionar, .Net Core pasará a ser .Net 5 y por fin se unirán los dos caminos en un único framework, que se actualizara cada año. Cada dos años aparecerá una versión LTS (long term support) que son las que yo usaría para los proyectos que van a producción. Aquí lo explican muy bien (y mucho más extendido) todo:
Espero que este resumen pueda ser de ayuda si tenias alguna duda al respecto.
¡Nos leemos!