Para todos aquellos que soy nuevos en el mundo .NET o lleváis tiempo trabajando con el .NET Framework este articulo pretende dar una visión de las posibilidades de la nueva plataforma para nuevos desarrollos de aplicaciones y proyectos que se realicen con este nuevo framework .NET5 ya que ofrece una serie de ventajas con respecto a todos los anteriores.
La llegada de .NET 5 GA Oficial está a la vuelta de la esquina, a la hora de escribir este artículo ya está disponible la versión .NET v5.0.0-preview.8 y como lleva anunciado Microsoft los últimos meses hay planificado un roadmap de producto con nuevas versiones que se presentaran cada año como NET6, NET7, NET8 hasta el año 2023.
Veamos todo esto un poco en detalle en los siguientes apartados empezando por explicar realmente que es .NET5
Que es realmente .NET5
.NET 5 es la convergencia de todos los .NET frameworks de Microsoft existentes en nueva plataforma unificada. De esta forma, se pretende reducir la complejidad y facilitar la creación de una nueva generación de soluciones con Visual Studio, Visual Studio Code y Command Line Interface donde construir todo tipo de soluciones.
La construcción de nuevas aplicaciones .NET5, se podrán desarrollar y publicar en diferentes sistemas operativos, plataformas de nube, plataformas móviles, IoT y otros dispositivos con diferentes lenguajes y herramientas.
Encontramos la siguiente lista de soluciones disponibles en .NET5:
- Desktop Development
- Web Development
- Cloud Development
- Mobile Development
- Game Development
- IoT and Devices Development
- AI y Machine Learing Development
- Interoperabilidad .NET con otros lenguajes
- Angular, React, VUE y otras librerías JS soportadas
- CoreFX soportado y extendido para compilación estática de .NET
- Java, Objective C y Swift tendrá interoperabilidad soportada
El nuevo .NET5 nos permitirá crear soluciones para Azure, AWS, GCP, Windows, Linux, Android, macOS, iOS, tvOS, watchOS, WebAssembly, Xbox, IoT entre otras, todo ello, integrado dentro de una única plataforma global de desarrollo de soluciones.
¿Y qué pasa con .NET Core y .NET Framework?
Como explicaba en 2019 Scott Hunter (Microsoft Director Program Manager .NET) en su blog oficial, NET Core is the future of .NET, es importante tener la visión de que todas las aplicaciones se empiecen a desarrollar con .NET Core como inversión para que, en un futuro, puedan migrarse a las nuevas tecnologías de .NET 5 o empezar los nuevos desarrollos con esta nueva tecnología una vez esté disponible la versión oficial.
Los desarrolladores del ecosistema Microsoft y .NET sabemos que en la actualidad disponemos de varios .NET framework de desarrollo para diferentes escenarios de aplicaciones lo cual es una fragmentación que añade mucha complejidad a los proyectos y equipos ya que tienen que trabajar con diferentes bases de código, librerías, SDKs y formación específica para cada una de ellas.
Si bien es cierto que mediante .NET Standard se puede simplificar la base de código, a veces no se pueden cubrir todos los escenarios y compatibilidad entre los diferentes .NET Framework como se puede consultar en la siguiente tabla de referencia para verificar compatibilidades: https://docs.microsoft.com/es-es/dotnet/standard/net-standard
También podemos descargar y utilizar la herramienta .NET Portability Analyzer que nos permite analizar ensamblados y obtener un informe detallado sobre las API de .NET que faltan para que las aplicaciones o bibliotecas sean portátiles en sus plataformas .NET específicas.
La documentación para usarla la encontramos en este link: https://docs.microsoft.com/en-us/dotnet/standard/analyzers/portability-analyzer
La visión o mejor dicho el objetivo que busca Microsoft con .NET5 es unificar estos 3 Framework .NET actuales como son .NET Core, .NET Framework y Xamarin en uno solo para ofrecer una nueva plataforma global de desarrollo.
Instalación de NET5 Preview-8
Como explicaba al principio, ya tenemos disponible la versión NET v5.0.0-preview.8 que podemos descargar para empezar a investigar y realizar nuestras pruebas de concepto y tecnología del SDK completo y los diferentes Runtimes.
Para descargarlo, nos vamos al enlace oficial: https://dotnet.microsoft.com/download/dotnet/5.0
Una vez descargado el instalador para Windows, Linux o macOs, lo instalamos y vamos a probarlo desde la Command line. En mi caso voy a descargar el .NET 5.0 SDK (v5.0.100-preview.8) - Windows x64 Installer, cuya instalable descargado en mi equipo es el siguiente: dotnet-sdk-5.0.100-preview.8.20417.9-win-x64.exe
El instalador lo lanzamos con permisos de Administrador en nuestro equipo para registrar los SDK de .NET y tiene la siguiente pantalla donde simplemente seguimos los pasos para instalarlo.
Una vez finalizada la instalación veremos el siguiente mensaje si todo fue correcto.
Microsoft .NET SDK 5.0.100-preview.8.20417.9
La instalación se realizó correctamente.
Se instaló lo siguiente en: "C:\Program Files\dotnet"
- SDK de .NET 5.0.100-preview.8.20417.9
- .NET Runtime 5.0.0-preview.8.20407.11
- ASP.NET Core Runtime 5.0.0-preview.8.20414.8
- .NET Windows Desktop Runtime 5.0.0-preview.8.20411.6
Para verificar la instalación desde CMD o PowerShell ejecutaremos lo siguiente: dotnet --info
C:\Windows>dotnet --info
SDK de .NET Core (reflejando cualquier global.json):
Version: 5.0.100-preview.8.20417.9
Commit: fc62663a35
Entorno de tiempo de ejecución:
OS Name: Windows
OS Version: 10.0.18363
OS Platform: Windows
RID: win10-x64
Base Path: C:\Program Files\dotnet\sdk\5.0.100-preview.8.20417.9\
Host (useful for support):
Version: 5.0.0-preview.8.20407.11
Commit: bf456654f9
.NET SDKs installed:
3.1.105 [C:\Program Files\dotnet\sdk]
3.1.301 [C:\Program Files\dotnet\sdk]
5.0.100-preview.8.20417.9 [C:\Program Files\dotnet\sdk]
.NET runtimes installed:
Microsoft.AspNetCore.App 3.1.5 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 5.0.0-preview.8.20414.8 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.NETCore.App 3.1.5 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 5.0.0-preview.8.20407.11 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.WindowsDesktop.App 3.1.5 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
Microsoft.WindowsDesktop.App 5.0.0-preview.8.20411.6 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
To install additional .NET runtimes or SDKs:
https://aka.ms/dotnet-download
Para ver la lista de proyectos que tenemos disponibles ejecutamos el comando: dotnet new
Aparecerá la lista completa de todos los templates y lenguajes que podemos utilizar para nuevos proyectos en .NET5
C:\Windows>dotnet new
Welcome to .NET 5.0!
---------------------
SDK Version: 5.0.100-preview.8.20417.9
Telemetría
---------
Las herramientas de .NET Core recopilan datos de uso para ayudarnos a mejorar su experiencia. Estos datos son anónimos. Microsoft los recopila y comparte con la comunidad. Puede optar por no participar en la telemetría si establece la variable de entorno DOTNET_CLI_TELEMETRY_OPTOUT en "1" o "true" mediante su shell favorito.
Lea más sobre la telemetría de las herramientas de la CLI de .NET Core: https://aka.ms/dotnet-cli-telemetry
----------------
Se instaló un certificado de desarrollo con HTTPS para ASP.NET Core.
Para confiar en el certificado, ejecute "dotnet dev-certs https --trust" (solo Windows y macOS).
Obtenga más información sobre HTTPS: https://aka.ms/dotnet-https
----------------
Escriba su primera aplicación: https://aka.ms/dotnet-hello-world
Descubra las novedades: https://aka.ms/dotnet-whats-new
Explore la documentación: https://aka.ms/dotnet-docs
Notifique los problemas y busque el código fuente en GitHub: https://github.com/dotnet/core
Use "dotnet --help" para ver los comandos disponibles o visite: https://aka.ms/dotnet-cli
--------------------------------------------------------------------------------------
Getting ready...
Templates Short Name Language Tags
-------------------------------------------- ------------------- ------------ -------------------
Console Application console [C#], F#, VB Common/Console
Class library classlib [C#], F#, VB Common/Library
WPF Application wpf [C#], VB Common/WPF
WPF Class library wpflib [C#], VB Common/WPF
WPF Custom Control Library wpfcustomcontrollib [C#], VB Common/WPF
WPF User Control Library wpfusercontrollib [C#], VB Common/WPF
Windows Forms (WinForms) Application winforms [C#], VB Common/WinForms
Windows Forms (WinForms) Class library winformslib [C#], VB Common/WinForms
Worker Service worker [C#], F# Common/Worker/Web
Unit Test Project mstest [C#], F#, VB Test/MSTest
NUnit 3 Test Project nunit [C#], F#, VB Test/NUnit
NUnit 3 Test Item nunit-test [C#], F#, VB Test/NUnit
xUnit Test Project xunit [C#], F#, VB Test/xUnit
Razor Component razorcomponent [C#] Web/ASP.NET
Razor Page page [C#] Web/ASP.NET
MVC ViewImports viewimports [C#] Web/ASP.NET
MVC ViewStart viewstart [C#] Web/ASP.NET
Blazor Server App blazorserver [C#] Web/Blazor
Blazor WebAssembly App blazorwasm [C#] Web/Blazor/WebAssembly
ASP.NET Core Empty web [C#], F# Web/Empty
ASP.NET Core Web App (Model-View-Controller) mvc [C#], F# Web/MVC
ASP.NET Core Web App webapp [C#] Web/MVC/Razor Pages
ASP.NET Core with Angular angular [C#] Web/MVC/SPA
ASP.NET Core with React.js react [C#] Web/MVC/SPA
ASP.NET Core with React.js and Redux reactredux [C#] Web/MVC/SPA
Razor Class Library razorclasslib [C#] Web/Razor/Library
ASP.NET Core Web API webapi [C#], F# Web/WebAPI
ASP.NET Core gRPC Service grpc [C#] Web/gRPC
dotnet gitignore file gitignore Config
global.json file globaljson Config
NuGet Config nugetconfig Config
Dotnet local tool manifest file tool-manifest Config
Web Config webconfig Config
Solution File sln Solution
Protocol Buffer File proto Web/gRPC
Una vez revisadas las Templates, confiamos en el certificado con el comando: dotnet dev-certs https --trust
C:\Windows>dotnet dev-certs https –trust
Trusting the HTTPS development certificate was requested. A confirmation prompt will be displayed if the certificate was not previously trusted. Click yes on the prompt to trust the certificate.
A valid HTTPS certificate is already present.
Ya tenemos .NET5 instalado en nuestro equipo. En el próximo articulo experimentaremos y realizaremos pruebas con Visual Studio 2019 y Visual Studio Code para crear un proyecto web o un proyecto de APIs.
Conclusiones
La apuesta de Microsoft por .NET5 es una evolución en el ecosistema de desarrollo de todo tipo aplicaciones modernas por lo tanto es recomendable que los desarrolladores empiecen a conocer todas las capacidades y funcionalidades del nuevo framework tanto para el desarrollo de nuevas aplicaciones como para la migración de aplicaciones actuales con .NET Framework y .NET Core en un futuro.
Por otro lado, Microsoft continuará dando soporte a los actuales framework .NET 4.8 y .NET Core 3.1 LTS durante los próximos años para los desarrollos de aplicaciones actuales y amortizar la inversión por parte de las empresas y organizaciones.
Si te ha gustado el artículo, ¡Síguenos en Twitter y no te pierdas los próximos posts de .NET5!