Hey estimados devs, hace muy poquito anunciaron una nueva versión de la plataforma .NET (aquí puedes leer el anuncio oficial), como ya sucede desde 2020 en donde en cada noviembre sale una nueva versión, en el 2024 salió la versión 9 y aquí te voy a resumir las nuevas características que trajo agrupándolas por temas 😉✌🏼
.NET Aspire
En este artículo te explico qué es Aspire, si no sabes qué es, este sería un buen punto de partida 🫡
Este conjunto de herramientas salió en la version .NET 8, así que en esta ocasión lo que presentaron fueron mejoras y características que no tenía, como las siguientes:
- Poder conectarse a cualquier base de datos.
- Integración con OpenAI.
- Mejoras en su dashboard.
- Actualización en su telemetría: El panel ahora admite el protocolo OpenTelemetry (OTLP) sobre HTTP y el uso compartido de recursos de origen cruzado (CORS).
- Compatibilidad con Azure Functions (versión preliminar).
- .NET Aspire community toolkit (aquí el detalle).
Para más información visita esta página oficial.
Integración con Inteligencia Artificial
.NET ha creado un conjunto de bibliotecas agrupadas en lo que llamaron Microsoft.Extensions.AI.
Estas bibliotecas proporcionan una capa unificada de abstracciones de C# para interactuar con servicios de IA, como modelos de lenguaje pequeños y grandes (SLM y LLM), embeddings y middleware.
Puedes ver todo el detalle aquí.
C#13 y Linq
Junto con .NET 9 vino también la nueva versión del lenguaje C#, la cual presenta las siguientes novedades:
- Acceder a índices implícitos.
- Nueva secuencia de escape.
- Parámetros de cualquier tipo de colección, aquí hay más detalle.
- Nuevos métodos Linq: CountBy y AggregateBy: CountBy te permite calcular rápidamente la frecuencia de cada clave.
Veamos un ejemplo de CountBy:
Si queremos por ejemplo resolver el algoritmo: Hallar la palabra más repetida (por si te interese, en este artículo lo resuelvo).
En versiones anteriores lo harías así:
public static void TheMostRepeatedWord(string text)
{
var dictionary = new Dictionary<string, int>();
var words = text.Split(new char[] { ',', ' ', '.' },
StringSplitOptions.RemoveEmptyEntries)
.Select(w => w.ToLower());
foreach (var word in words)
{
if (!dictionary.ContainsKey(word))
dictionary[word] = 1;
else
dictionary[word]++;
}
var mostRepeatedWord = dictionary
.OrderByDescending(x => x.Value)
.FirstOrDefault().Key;
Console.WriteLine(mostRepeatedWord);
}
En .NET 9 con el nuevo método CountBy lo harías así:
public static void TheMostRepeatedWordNet9(string text)
{
var dictionary = new Dictionary<string, int>();
var mostRepeatedWord = text
.Split(new char[] { ' ', '.', ',' }, StringSplitOptions.RemoveEmptyEntries)
.Select(w => w.ToLower())
.CountBy(w => w)
.MaxBy(x => x.Value);
Console.WriteLine(mostRepeatedWord.Key);
}
Dónde te dan ejemplos así de concretos? Aquí nomás pues dev 🤣 aquí somos pragmáticos no hacemos tanto fururú farará jaja, hey estimado dev, comparte esta entrada ah!
Mayor detalle de la nueva versión de C# aquí.
ASP.NET Core
- Mejoras a la generación de documentos con OpenAPI en la librería Microsoft.AspNetCore.OpenApi, aquí mayor detalle.
- Nueva librería HybridCache con una mejora significativa en seguridad y rendimiento respecto a la opción anterior (IDistributedCache) ya que HybridCache combina lo mejor de dos mundos: la memoria caché local (rápida pero con un alcance limitado) y la caché distribuida (más lenta pero con un alcance mayor). Esto permite aprovechar al máximo las ventajas de ambos tipos de almacenamiento.
- Mejoras en SignalR como brindar soporte para AOT.
Sobre el último punto déjame explicártelo un poco más: AOT significa "Ahead-of-Time" o "Compilación anticipada". En lugar de compilar el código en tiempo de ejecución (como suele ocurrir), AOT lo compila antes de que la aplicación se ejecute. Esto es como preparar todos los ingredientes de una receta antes de empezar a cocinar, en lugar de ir buscando cada cosa mientras cocinamos.
Gracias a AOT, las aplicaciones que usan SignalR en .NET 9 son más eficientes y rápidas. ⚡
Rendimiento
De acuerdo al anuncio de Microsoft: .NET 9 es la versión de mayor rendimiento de .NET hasta el momento, con más de 1000 cambios relacionados con el rendimiento en el tiempo de ejecución, las cargas de trabajo y los lenguajes con algoritmos optimizados.
.NET 9 a través de Minimal APIs puede hacer más solicitudes HTTP por segundo: un 15% de incremento en el número de solicitudes por segundo respecto a su versión anterior y además con menor uso de memoria, llegando hasta un 93% de reducción en uso de memoria.
Esto es asombroso, y aunque estas mediciones por lo general son en ambientes controlados e ideales, no deja de ser una mejora muy significativa aún en entornos de producción y desarrollo reales.
Todo el detalle de mejoras en rendimiento lo puedes leer aquí.
Mejoras en otros temas...
- Ahora se pueden correr pruebas en paralelo.
- Nuevos y mejores controles para mobile en MAUI.
- No es una mejora sino más bien un cambio: Swagger ya no vendrá integrado por default en nuevos proyectos, sin embargo puedes añadirlo como una librería más una vez creado el proyecto instalando 𝑆𝑤𝑎𝑠ℎ𝑏𝑢𝑐𝑘𝑙𝑒.𝐴𝑠𝑝𝑁𝑒𝑡𝐶𝑜𝑟𝑒 (esto es porque Microsoft dió más relevancia a su biblioteca propia Microsoft.AspNetCore.OpenApi). En lo particular, a mi me gustaba Swagger, pero bueno...! toca adaptarse.
- Mejoras diversas en Github copilot como inspección de variables con inteligencia artificial, autocompletado mejorado con IA, debug tests, entre otros.
Esto es en resumen los cambios más resaltantes de la nueva versión de .NET 9, me ha tomado un tiempo consolidar este artículo porque tuve que documentarme bien y darte referencias a todo lo que dije, pero aquí está listo por fin el artículo, el mejor agradecimiento es que lo compartas! 🦊✌🏼
Si esta entrada te ha gustado, entonces compártela genio! 🥳🦊
Créditos de imagen de portada: https://devblogs.microsoft.com/