En Mi Local Funciona

Technical thoughts, stories and ideas

NET5: La nueva plataforma de desarrollo unificada para programar cualquier tipo de aplicaciones modernas con Visual Studio

Publicado por Santi Macias el

.NET5Visual StudioDesarrollo Aplicaciones

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 que 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!

Santi Macias
Autor

Santi Macias

Microsoft Tech Lead en atSistemas, +20 años trabajando con tecnologías Microsoft actualmente centrado sobretodo en Azure, Cloud Native, DevOps, Docker, Kubernetes, Microservicios y Serverless.