Web Stories: el futuro de .NET – 2020/05

Web Stories: el futuro de .NET – 2020/05
<span class="bsf-rt-reading-time"><span class="bsf-rt-display-label" prefix="Tiempo de Lectura"></span> <span class="bsf-rt-display-time" reading_time="7"></span> <span class="bsf-rt-display-postfix" postfix="minutos"></span></span><!-- .bsf-rt-reading-time -->

.NET Core surgió en 2015 como una evolución a .NET Framework, aunque con notables diferencias: Open Source, Multiplataforma y dirigido por la comunidad. Hoy sabemos que el futuro de .NET es es .NET 5, ya en Preview 4 y con versión final anunciada para Noviembre de 2020, y con la gran promesa de unificar .NET en todas sus expresiones.

El Martes 12 de Mayo de 2020 participamos, junto con Sebastián Leo Perez, en una sesión focalizada en compartir detalles del futuro de .NET, en marco de una nueva sesión de Web Stories de Endava. Allí NET-Baires, la comunidad de desarrollo .NET más importante de Argentina, dijo presente.

En esta publicación, y con novedades recientemente recibidas del Build 2020, te comparto el video y material presentado durante la sesión, y un plus con las principales novedades actualizadas del futuro de .NET.

¡Ojalá lo disfrutes!

.NET 5 = .NET Core vNext (¡y mucho más!)

Desde la concepción de .NET Core, se han agregado más de 50 mil APIs de .NET Framework a la plataforma. .NET Core 1.x, 2.x y 3.x fueron las evoluciones de este framework, cerrando cada vez más la brecha existente con las capacidades de .NET Framework, Windows Forms, WPF y Entity Framework.

.NET 5 es la gran próxima versión, que busca tomar lo mejor de .NET Core, lo mejor del proyecto Mono y muchas otras características, en pos de crear una plataforma unificada para desarrollar soluciones de software modernas basadas en .NET. Así, .NET 5 incluirá ASP.NET Core, Entity Framework Core, WinForms, WPF (Window Presentation Foundation), Xamarin y ML.NET. La idea es ofrecer la posibilidad cada vez mayores capacidades reutilizando la mayor cantidad de código posible.

En el Build 2019 (evento donde tuve el placer de estar en forma física) se anunciaba esta nueva era: se tomarían las implementaciones de .NET Core, Mono / Xamarin y se unificarían en una biblioteca de clase base (BCL) y herramientas (SDKs) con .NET 5.

En línea con este anuncio, aunque con velocidad reducida a causa de re-priorizaciones que provocó la pandemia COVID-19, hace pocos días Microsoft anunció que .NET 5 iba a tener gran parte de esta visión, pero que la unificación se completará realmente con .NET 6 en 2021.

En resumen, el futuro de .NET de la mano con las versiones 5 (2020) y 6 (2021) tendrá las siguientes novedades en alto nivel:

  • .NET 5+ será la única plataforma .NET y contendrá un único runtime que funcionará de la misma manera en todos los sistemas.
  • Ofrecerá, practicamente, las mismas posibilidades en todos los entornos de desarrollo: escritorio, web, móvil y cloud.
  • Ampliará las actuales capacidades de .NET Core incluyendo también lo mejor de .NET Framework, Xamarin e incluso el proyecto Mono.
  • Facilitará tener una única base de código, y no varias separadas como sucedía para algunas plataformas.
  • Brindará, entre otras mejores, un mejor soporte para contenedores en tiempo de ejecución, compatibilidad con HTTP3 y mejoras en la performance.

.NET 5 mantendrá, para los desarrolladores, el ecosistema predeterminado de desarrollo: Visual Studio, Visual Studio for Mac, Visual Studio Code y por supuesto CLI.

¿.NET sin “Core” y sin “Standard”?

Microsoft ha decidido remover el nombre “Core” de varios aspectos del producto, incluidas las PIs y repositorios de contenedores. Esto puede haber traido un poco de confusión en algunos desarrolladores, que el año pasado pensaron que “.NET Core desaparecía”. ¡No, no es así! .NET 5 es la próxima versión de .NET Core, aunque (como ya vimos) y mucho más también.

Por otro lado, la firma tiene planeado eliminar el .NET Standard, al menos como concepto. A partir de .NET 5 y próximas versiones, .NET Standard ya no será relevante y Microsoft recomienda apuntar al net5.0 TFM (Target Framework Moniker). Donde sí seguirá siendo relevante .NET Standard es para aplicaciones y bibliotecas que necesiten admitir .NET Framework y para Xamarin.

Solo para que todos estemos “en la misma página”, .NET Standard tuvo un papel clave en el establecimiento de .NET Core, como forma de crear un puente entre .NET Framework y Xamarin. Pero una vez que Xamarin se integre completamente con el futuro de .NET (revisar más abajo MAUI) a partir de .NET 6, ya no tendrá mucho sentido mantenerlo.

Características más importantes del futuro de .NET (5 y +)

Vamos a repasar las características más importantes anunciadas de .NET (5 y futuras versiones), muchas de ellas ya presentes en la versión preview 4 y otras planeadas para el corto plazo.

C# 9 y F# 5

.NET 5 incluye C# 9 y F# 5 con muchas novedades. Te sugerimos revisarlo en el siguiente link y siguiente link respectivamente.

Mejoras en Performance

Numerosas performance se han lanzado en .NET 5 Preview, y se anunciaron para futuras versiones. Entre ellas:

  • Mejoras de performance en expresiones regulares.
  • Mejoras de performance en HTTP 1.1 y /2.
  • Mejoras de performance en compilación escalonada.
  • Mejoras en rendimiento constante, reduciendo picos negativos de performance y usod e CPU.
  • Mejoras en compilación escalonada para múltiples releases.

Podrás ver el listado de estas mejoras de performance en los pull requests de dotnet relacionados.

Single file applications

Existirá un nuevo tipo de publicación en .NET 5 que brindará la posibilidad de utilizar .NET con distribución de 1 solo archivo.

Microsoft explicó que existieron dificultades (y continuarán hasta que la característica se refine) para lograr esta experiencia, en relación a restricciones en Linux y Windows pra cargar contenido ejecutable de recursos nativos. Por eso mismo, la experiencia de este feature en Windows y Linux será similar, pero no la misma.

De esta manera, por ejemplo, las aplicaciones independientes de un solo archivo en Windows requieren cuatro archivos adicionales más allá de la aplicación. Microsoft explicó que no ha podido incluir estos archivos de tiempo de ejecución y que no hay hoy en día un plan técnico para ocultar estos archivos adicionales en Windows.

Soporte nativo para Windows ARM64

Las aplicaiones .NET ahora pueden ejecutarse en forma nativa en Windows ARM64. Así como para Linux, ya en .NET Core 3 se había agregado soporte, con .NET 5 se podrá hacer en dispositivos Windows ARM64.

Mejoras para Contenedores

La contenerización de aplicaciones es, sin lugar a dudas, una tendencia creciente en aplicaciones preparadas para “la nube”. Desde el punto de vista del futuro de .NET, se invirtió en 3 pilares fundamentales para este tema:

  • Rendimiento. Se está trabajando en un conjunto de cambios que promete mejoras sustanciales para aplicaciones contenerizadas con .NET. En .NET Core 3.1 existió un cambio (que luego fue revertido) que causó problemáticas de bajo rendimiento y que hoy aún la comunidad se sigue lamentando.
  • Tamaño. Reducir el tamaño de las imágenes es un pedido creciente de todos los desarrolladores de software, comparados con otros frameworks. Microsoft estuvo trabajando en cambios que permiten reducir el tamaño de imagenes de Windows Server Core, que la hacen más “atractiva” de usar.
  • Orquestadores. Se está realizando un fuerte trabajo para facilitar el trabajo con orquestadores de contenedores y entornos similares. Por ejemplo: soporte out-of-the-box para OpenTelemetry. Asimismo, Microsoft está trabajando junto a la comunidad en herramientas experimentales para mejorar la experiencia y productividad del desarrollador en aplicaciones basadas en Microservicios y Kubernetes.

New Target Framework

Como hemos explicado antes en esta publicación, y con foco en simplificar el uso, reducir conceptos y facilitar la exposición de APIs específicas del sistema operativo, se han realizado cambios importantes en los Target Frameworks de .NET.

El cambio fundamental es que no existirán dos familias distintas para .NET Core y .NET Standard: solo existirá una. En caso de .NET 5, será net5.0. Esto se debe a que habrá una sola implementación de .NET en el futuro, por lo que ya no hay necesidad de acortar la brecha entre .NET Framework y Xamarin.

Más detalles sobre el nuevo acercamiento en el siguiente link.

.NET Multi-Platform App UI (MAUI)

Como parte de anuncios del Microsoft Build 2020 hace muy pocos días, y como gran novedad que está en boca de todos, .NET Multi-platform App UI, o más bien conocida como .NET MAUI, salió a la luz.

.NET MAUI es una evolución del popular Xamarin.Forms. .NET MAUI extiende las capacidades multi-plataforma de Forms propias de dispositivos móviles al escritorio, lo que lo convierte en una gran opción para crear aplicaciones multiplataforma en ambos mundos. En un solo stack de trabajo, podremos desarrollar para Android, iOS, macOS y Windows, con practicamente una única base (o al menos eso se facilitaría) de código a través de APIs multi-plataforma.

MAUI overview

.NET MAUI admitirá patrones conocidos como MVVM y XAML actualmente presentes, como así también capacidades futuras como MVU (Model-View-Update) con C# y Blazor.

¿Qué impacto tendrá esto para el desarrollador?

  • Se podrá tener 1 único proyecto para múltiples plataformas, a comparación de lo que hoy ocurre (Xamarin genera 1 proyecto diferente para iOS, Android y Windows).
  • El Framework gestionará las fuentes compartidas en cada plataforma como también la creación y gestión de imágenes, con una ubicación.
  • Existirá multi-targeting para organizar el código específico para una plataforma.

.NET Multi-platform App UI tendrá su primer preview este año, aunque la disponibilidad estable y general será con .NET 6 en Noviembre 2021. Se puede ver el roadmap de .NET MAUI aquí.

Video de la Charla

Te compartimos el video completo con de la sesión. Recordá, por favor, que la charla se dió ANTES de los anuncios del Build 2020. No obstante, me parecía un detalle importante retrasar la salida de esta publicación para agregar contenido actualizado, al menos en texto (el que has visto más arriba). ¡Pronto desde NET-Baires tendremos una nueva versión de la misma profundizando conceptos!

Presentación de la Charla

La presentación mostrada durante la charla es la siguiente:

Fotos de nuestra Participacion 🙂

¡Muchas gracias Endava por la invitación!

5 1 vote
Article Rating

Professor. Techie. Ice cream fan (dulce de leche). My favorite phrase: "Todos los días pueden no ser buenos ... pero hay algo bueno en todos los días". Currently I´m Engineering Manager at MODO (https://modo.com.ar), the payment solution that allows you to connect your money and your world to simplify everyday life. Modo is a payment solution in which you can send, order and pay from your mobile device in the safest, most practical and convenient way. I enjoy a lot of educational, technological talks and a good beer. If you want to talk, write me to pablodiloreto@hotmail.com.

Subscribe
Notify of
guest

2 Comments
Most Voted
Newest Oldest
Inline Feedbacks
View all comments
Nico Milcoff
Nico Milcoff
May 21, 2020 4:42 PM

Excelente resumen Pablo! :clap: