En esta entrada hablaremos sobre .NET 8 Preview 5, en la que se resaltan diversas mejoras y características introducidas en este lanzamiento. Continuando con la tradición de lanzamientos mensuales, se espera la inclusión de muchas más funcionalidades en futuras versiones. Se destaca especialmente la atención brindada a los usuarios de .NET 6 y 7, ya que se ha trabajado en facilitar el proceso de actualización hacia esta nueva versión.

Los usuarios interesados pueden descargar .NET 8 Preview 5 para los sistemas operativos Linux, macOS y Windows. Algo importante de resaltar es que ya se encuentran disponibles las imágenes de contenedores para esta nueva versión preliminar.

Durante el evento de Microsoft Build 2023, según Jiachen Jiang Product Manager, .NET Data Access/Entity Framework, su éxito en gran medida fue gracias a la participación de entusiastas desarrolladores de .NET. también se aprovecho para que el equipo de .NET presentara sesiones donde se discutieron las características más emocionantes de .NET 8 y se respondieron preguntas de los asistentes.

A continuación menciono algunas de las nuevas características que considero importantes y están presentes en esta versión preliminar:

SDK: mejoras en las API de métricas

La versión preliminar 5 trae una serie de mejoras y actualizaciones a las API de métricas que cubren casos de uso adicionales:

API de métricas compatibles con inyección de dependencia (DI)

El equipo de desarrollo de .NET 8 ha presentado la nueva interfaz IMeterFactory, la cual puede registrarse en contenedores DI y usarse para crear objetos Meter de manera aislada. Un ejemplo de su implementación es:

// El servicio es DI IServiceCollection
// Registre IMeterFactory en el contenedor DI utilizando la implementación predeterminada de la fábrica de medidores.
servicios.AddMetrics();

Con el siguiente ejemplo de implementación, los Consumers ahora pueden crear un Meter Factory para usarlo y crear fácilmente un nuevo objeto Meter.

IMeterFactory meterFactory = serviceProvider.GetRequiredService<IMeterFactory>();

MeterOptions options = new MeterOptions("MeterName")
{
    Version = "version",
};
Meter meter = meterFactory.Create(options);

Habilitación de la creación de Meter e instrumentos con etiquetas

Los Meters e instrumentos también se pueden crear con etiquetas de par clave-valor. Esta función permite a los agregadores de medidas de métricas publicadas, diferenciar los valores agregados en función de estas etiquetas.

MeterOptions options = new MeterOptions("name")
{
	Version = "version",

	// Agregue estas etiquetas al Meter que ha creado.
	Tags = new TagList() { { "MeterKey1", "MeterValue1" }, { "MeterKey2", "MeterValue2" } }
};

Meter meter = meterFactory.Create(options);

Instrument instrument = meter.CreateCounter<int>("counter", null, null, new TagList() { { "counterKey1", "counterValue1" } });
instrument. Add(1);

SDK: ¡Source Link es parte del SDK de .NET!

Source Link es un sistema agnóstico de lenguaje y control de fuente que proporciona una experiencia de depuración de código fuente de primera clase para los binarios.

Source Link ahora está integrado en el SDK de .NET para mejorar la experiencia de los desarrolladores al inspeccionar paquetes NuGet vinculados al código fuente. Este cambio permitirá que más paquetes incluyan esta información de forma predeterminada. Source Link es un sistema agnóstico de lenguaje y control de fuente que proporciona una depuración de código fuente de alta calidad para binarios.

Es respaldado por Microsoft y utilizado por bibliotecas como .NET Core y Roslyn. Visual Studio y otros editores admiten la lectura de información de Source Link desde símbolos durante la depuración, lo que permite descargar y mostrar el código fuente específico del commit correspondiente.

La implementación de Source Link incluye proveedores para git, GitHub, GitLab, Azure Repositories y BitBucket, hay más proveedores disponibles en NuGet.

SDK: nuevos analizadores de bibliotecas .NET

Los analizadores son como ayudantes de programación incorporados en el SDK y el entorno de desarrollo interactivo (IDE), los cuales detectan problemas y ofrecen sugerencias de corrección mientras se escribe código. A partir de la versión preliminar 1 de .NET 8, el equipo de trabajo de .NET ha agregado varios analizadores y correctores de código que ayudan a los desarrolladores a verificar el uso correcto y más eficiente de las API de la biblioteca .NET. Algo importante de destacar es que la mayoría de estos analizadores fueron desarrollados por miembros de la comunidad de .NET, por lo que su funcionamiento está adecuado a las necesidades de la industria en general.

La lista completa de estos analizadores es variada así que pueden consultarla en este enlace.

SDK: Linux self-contained

El SDK integrado en la distribución de Linux (source-build) ahora puede crear aplicaciones independientes que utilizan paquetes runtime de tipo source-build. El paquete de tiempo de ejecución específico se incluirá con el source-build SDK.

La capacidad Self-Contained o aplicación autocontenida, permite que cuando se realiza una compilación del código fuente de una aplicación .NET, en automático se incluyen las librerías y runtimes para su ejecución en la plataforma de destino (windows, linux, etc); sin la necesidad de instalar en el sistema operativo o plataforma destino el runtime para su ejecución ya que ya lo contiene.

SDK: Self-contained no será predeterminado

Desde .NET 6, especificar un runtime durante la publicación genera la siguiente advertencia:

> warning NETSDK1179: One of '--self-contained' or '--no-self-contained' options are required when '--runtime' is used.

Para .NET 8, esto finalmente desaparecerá. En el futuro, -r/--runtime ya no implicará --self-contained para aplicaciones dirigidas a .NET 8.0 y Target Frameworks superiores. Si tiene la intención de tener ese comportamiento, tendrá que

  • agregar la opción CLI explícitamente, o
  • agregar la propiedad <SelfContained>true</SelfContained> a sus archivos de proyecto

Las aplicaciones dirigidas a .NET 7.0 o inferior no se verán afectadas. El equipo de desarrollo realiza este cambio porque consideran que apuntar a plataformas específicas es una decisión independiente de agrupar el runtime para una plataforma de destino determinada.

Imagen Docker: Composite de Alpine de ASP.NET

El equipo de desarrollo ofrece una nueva imagen de Docker de ASP.NET, que utiliza una variante nueva de compilación lista para ejecutar o ready-to-run (R2R) llamada “composite”. Las imágenes R2R composite se construyen al compilar múltiples ensamblajes MSIL en un solo binario de salida R2R. Las imágenes Composite pueden tener varios beneficios: reducción del tiempo JIT, rendimiento de inicio reducido y reducción del tamaño de imagen R2R.

Las imágenes compuestas tienen un acoplamiento de versión más estrecho. Esto significa que la ejecución final de la aplicación no puede usar diferentes versiones del framework, como System.Reflection.Metadata y/o los binarios de ASP.NET que están incrustados de manera compuesta. Esta limitación es la razón por la que el equipo de desarrollo de .NET 8 está produciendo una nueva imagen. Es posible que las aplicaciones actuales no puedan funcionar con Composite, por la forma en cómo están construidos, probablemente se deberán realizar ajustes para su correcto funcionamiento con Composite.

Un punto a considerar es que esta nueva imagen está basada en Alpine lo cual lo hace ideal por su tamaño y ligereza para trabajar en entornos Linux.

Las imágenes Composite estarán disponibles como vista previa en el repositorio mcr.microsoft.com/dotnet/nightly/aspnet. Las imágenes de contenedores están etiquetadas con el sufijo -composite en la página oficial de imágenes nightly Dotnet Docker.

En definitiva esta nueva versión de .NET 8 Preview 5, trae nuevas funcionalidades y características antes de la salida del tan esperado .NET 8 el próximo noviembre el cual será una versión LTS.

Para más detalles y otros puntos importantes, puedes visitar el artículo oficial del anuncio de .NET 8 Preview 5.

Por favor síguenos y dale me gusta: