.NET Conf 2018: El futuro de .NET (I): Líneas generales

Entre los días 12 y 14 de septiembre de 2018 se celebró la .NET Conf 2018, una serie de conferencias online que nos han permitido conocer los avances de la plataforma. En este primer artículo revisamos las líneas generales.

El .NET Core de ahora

La parte pririncipal de la keynote emitida el primero de los días de la conferencia corrió a cargo de Scott Hunter, que se preocupó mucho en destacar dos aspectos remarcables de la situación actual de .NET Core: en primer lugar, su progresiva implantación en el ámbito del código abierto, en el que el número de contribuciones ha crecido de forma aritmética en el último año; y en segundo lugar, la buena puntuación que obtiene .NET Core en los benchmarks independientes más exigentes, a pesar de que Hunter insiste en que aún se está trabajando en la optimizacióno y el rendimiento de la plataforma.

Todo ello augura un buen futuro para .NET Core, pero Hunter ha remarcado algunas de las características de las que ya podemos disfrutar desde mayo (con el .NET Core 2.1) o desde este mismo otoño con la versión 2.2.

El núcleo de .NET Core ha recibido algunas actualizaciones menores, como la implementación de acceso a los sockets, las Global Tools para poder automatizar tareas de compilación en entornos no-Windows y, sobre todo, una mejora importante del rendimiento, que en algunos casos alcanza incluso el 18% de incremento. Todo ello nos hace pensar que el núcelo de la versión 2.x está ya bastante consolidado.

EF Core, sin embargo, ha recibido un buen empujón en las versiones 2.1 y 2.2 de .NET Core. Se ha implmentado el Lazy Loading, y la versión 2.2 incluye la capacidad de realizar ingeniería inversa sobre vistas y la posibilidad, muy importante, de incluir tipos propios en las relaciones entre entidades, lo cual elimina parcialmente la necesidad de emplear Fluent API para declarar relaciones. También se han incluido características de Spatial para geolocalización y se ha implementado un proveedor para Cosmos DB, la baser de datos no-SQL que Microsoft tiene disponible en Azure.

La característica que más atención recibe por parte de Microsoft es, sin duda, ASP.NET Core. En la versión 2.1, aparecida en mayo de este año, ya pudimos encontrar la implementación de HTTPS, así como el interfaz de Razor y la implementación de SignalR. Una de las características más interesantes de esta versión es la HTTPClientFactory, que nos permite inyectar servicios HTTP cliente en las aplicaciones para realizar llamadas HTTP desde una aplicación ASP.NET Core.

Por lo que se refiere a ASP.NET Core 2.2, las mejoras no son llamativas pero van destinadas a completar las capacidades de la plataforma. Se han actualizado las plantillas de Bootstrap y Angular, se han implementado catacterísticas de seguridad en Web API y se ha mejorado la posibilidad de realizar hosting en IIS. El grueso de las novedades, no obstante, lo veremos con toda probabilidad en ASP.NET Core 3.0

El .NET Core del futuro

Un futuro que no es muy lejano: Microsoft planea lanzar la versión 3.0 de .NET Core a principios de 2019.

La primera bomba que lanza Scott Hunter es la implementación de .NET Core 3.0 para aplicaciones de escritorio WPF y WinForms (¡si, WinForms!). Las aplicaciones de escritorio se beneficiarán de un rendimiento mucho más alto, pero además dispondrán de características ahora impensables en las aplicaciones de escritorio: serán autocontenidas y no necesitarán la instalación de ningún Framework, pero podrán utilizar un Framework global si así lo quiere el desarrollador. Se van a incorporar controles específicos de XAML para soportar controles de WPF y de WinForms, y además se van a implementar las API’s de Windows 10.

.NET Core es multiplataforma a través de la creación de librerías de .NET Standard, pero esas librerías, como es natural, no permiten la utilización de elementos propios de los sistemas operativos de Microsoft (como el Registry o los ficheros config). Para acceder a esa posibilidad se implementará un paquete de compatibilidad con Windows que podrá integrarse en la aplicación… mediante un paquete NuGet, cómo no.

La segunda bomba que lanzó Hunter hace referencia a Web Assembly y la utilización de Razor en el cliente, pero esa la descubriremos en el siguiente artículo de esta serie. ¡Estad atentos!