Saltar al contenido

Artículos, tutoriales, trucos, curiosidades, reflexiones y links sobre programación web ASP.NET Core, MVC, Blazor, SignalR, Entity Framework, C#, Azure, Javascript... y lo que venga ;)

20 años online

el blog de José M. Aguilar

Inicio El autor Contactar

Artículos, tutoriales, trucos, curiosidades, reflexiones y links sobre programación web
ASP.NET Core, MVC, Blazor, SignalR, Entity Framework, C#, Azure, Javascript...

¡Microsoft MVP!
martes, 9 de junio de 2026
Distintos tipos de vehículos fusionándose

Todos hemos tenido que lidiar con situaciones en las que una función o método puede devolver diferentes tipos de datos dependiendo de ciertas condiciones. El ejemplo clásico es una función que puede devolver un resultado exitoso o un error, lo que a menudo se maneja con tipos como Result<T> o haciendo algunos malabarismos con composiciones de clases o herencia.

var result = GetUser(1);
if(result.Success) 
{
    var user = result.Value;
    // Hacer algo con el usuario
}
else 
{
    var error = result.Error;
    // Manejar el error
}

Son artificios que, aunque funcionan, dan trabajo, complican la legibilidad y ocultan la intención real del desarrollador a la hora de escribir código de procedimientos que manejen múltiples tipos de retorno.

Los tipos unión son una de las características más solicitadas en C# durante años, y finalmente los tendremos disponibles en la versión 15 del lenguaje, que vendrá de la mano de NET 11 en noviembre de 2026.

Con esta nueva capacidad, podremos crear tipos que pueden contener valores de varios tipos diferentes, con controles en tiempo de compilación y sin apenas complejidad adicional.

Lo vemos en detalle a continuación.

lunes, 8 de junio de 2026
Microsoft Build 2026 como un volcán en erupción

El evento Microsoft Build 2026 ha sido el gran protagonista de la semana, con tantos anuncios interesantes que cuesta trabajo citar sólo unos pocos: siete nuevos modelos AI propios, el framework UI Reactor, GitHub Copilot para escritorio, novedades en Windows para desarrolladores y plataformas de agentes, una nueva versión del chip cuántico Majorana, Azure Cobalt VM, HorizonDB, Windows NVidia RTX Spark, e incluso un divertido sistema operativo cuyas herramientas se van autogenerando mediante alucinaciones de la IA 😄🤯

Pero aún así, se han publicado otras muchas cosas que no deberíamos dejar de leer. Por ejemplo, ahora que estamos intentando asimilar el giro brutal de la política de precios de Github Copilot, Bruno Capuano nos ofrece consejos basados en su propia experiencia sobre cómo usar GitHub Copilot de forma efectiva, sin quemar el presupuesto de tokens en un rato. Muy recomendable si usas esta herramienta y quieres sacarle el máximo partido.

¿Puede un endpoint de .NET manejar un millón de solicitudes por segundo? Patrick Kearns nos cuenta cuáles son los cuellos de botella reales si pretendemos alcanzar ese nivel de rendimiento, y qué podemos hacer para mejorar el rendimiento de nuestras aplicaciones ASP.NET Core.

Hector Pérez nos muestra cómo aprovechar las nuevas capacidades de validación de formularios en Blazor 10, con ejemplos prácticos y consejos para mejorar la experiencia de usuario.

Se ha presentado Angular 22, con el nuevo Signal Forms, primitivas de accesibilidad, reactividad asíncrona y otras mejoras, muchas enfocadas en facilitar el desarrollo mediante IA.

Muchos más enlaces a contenidos interesantes de la semana, a continuación.

Por si te lo perdiste...

.NET

lunes, 1 de junio de 2026
Programador desesperado por lo que le dejó su yo del pasado

Mientras programamos, todos hemos dicho alguna vez "voy a tomar este atajo", "ya lo solucionaré en el futuro", "lo dejo hardcodeado por ahora"... y el código se queda así para siempre. Viene bien reflexionar sobre lo que estas decisiones implican, como las reflexiones de Martin Stühmer sobre lo crueles que somos a veces con nuestro yo del futuro, en un par de posts con títulos muy ilustrativos: My biggest enemy writes my code y I’m done making empty promises

Interesante también el artículo de Fran Iglesias explicando cómo usar métricas objetivas —no solo intuiciones o “elegancia”— para decidir cuándo y cómo refactorizar código con el fin de reducir costes de mantenimiento y mejorar la calidad.

Agentes, agentes IA everywhere... Pero, ¿cómo funcionan por detrás los agentes IA? En este post de Waldek Mastykarz nos explica el flujo de trabajo un agente para que podamos comprenderlo de forma sencilla.

También, Chris Pietschmann nos lleva de nuevo a las bases para revisar los ámbitos de vida de servicios en .NET (Singleton, Scoped y Transient) y entender cuándo usar cada uno de ellos.

Muchos más enlaces interesantes, a continuación.

Por si te lo perdiste...

.NET

martes, 26 de mayo de 2026
Técnicos trabajando sobre partes específicas de un proyecto complejo

Probablemente alguna vez habréis trabajado en Visual Studio con una solución .NET enorme, con decenas o centenares de proyectos. Es algo habitual en sistemas que tienen ya muchos años de vida, con una arquitectura muy compleja o que han ido creciendo con el tiempo sin un control adecuado.

En estos casos, el entorno de desarrollo tarda una eternidad en cargar la solución y quedar listo para su uso, el rendimiento de Visual Studio se resiente enormemente, con lo que cada acción que realicemos (compilar, ejecutar, depurar, etc.) se vuelve lenta y frustrante, y encima, al navegar por el código, todo se complicará bastante por la cantidad de proyectos y archivos que tendremos que manejar.

Y lo peor de todo es que es para nada. En la mayoría de los casos no es necesario tener todos los proyectos de la solución cargados para poder realizar nuestras tareas, porque lo habitual es que solo trabajemos con un subconjunto de ellos, normalmente bastante pequeño.

Afortunadamente, .NET permite crear filtros de solución (archivos .slnf), algo así como mini-soluciones que incluyen solo los proyectos que nos interesan en cada ocasión, mejorando el rendimiento de los entornos de desarrollo y facilitando la navegación por el código.

En este artículo vamos a ver qué son los filtros de solución, cómo crearlos y cómo usarlos.

lunes, 25 de mayo de 2026
Manitas realizando cálculos complejos para intentar alinear un cuadro con otro

Esta semana se ha lanzado Gemini 3.5 Flash, la nueva versión de los modelos de lenguaje de Google, con mejoras significativas en rendimiento y capacidades. José Manuel Alarcón analiza qué cambios trae esta actualización para los desarrolladores.

Hay casos de uso que funcionan bien y otros que fallan, pero, ¿qué ocurre con los que funcionan a medias? En este artículo, Milan Jovanović analiza cómo diseñar para el fallo parcial en .NET, explorando estrategias para manejar situaciones donde una operación no se completa en su totalidad.

Martin Stühmer nos recuerda que el código que escribimos hoy puede convertirse en un problema para otros, o incluso nosotros mismos, en el futuro, destacando la importancia de escribir código limpio y mantenible.

El posicionamiento en CSS ha sido un desafío para los desarrolladores durante mucho tiempo, especialmente al intentar mostrar tooltips relativos a elementos del DOM. Manikanda Akash Munisamy explora cómo los anchors en CSS podrían poner fin a los cálculos manuales para alinear estos elementos.

Y por último, me ha parecido interesante compartir este artículo de Barry Pollard y Noam Rosenthal sobre las actualizaciones parciales declarativas en Chrome, una nueva característica que permite a los desarrolladores actualizar solo partes específicas de una página web sin necesidad de recargar toda la página, mejorando así la experiencia del usuario.

El resto de enlaces, a continuación.

Por si te lo perdiste...

.NET

lunes, 18 de mayo de 2026
Desarrolladora con muchos monitores en los que aparecen distintas novedades de la semana

Esta semana se ha lanzado la preview 4 de .NET 11, con novedades en el runtime, librerías, SDK, C#, ASP.NET Core, .NET MAUI y Entity Framework Core. Especialmente interesantes la compilación de librerías con el nuevo runtime asíncrono y las incorporaciones a la API Process.

Se ha anunciado que la aplicación de escritorio GitHub Copilot, la visión de Microsoft de lo que será el desarrollo agéntico, está ya disponible como technical preview. Si eres suscriptor de GitHub Copilot Pro o Pro+, puedes comenzar a probarla.

Milan Jovanović ha publicado un artículo muy interesante sobre el versionado de APIs, un tema que siempre genera debate y que él aborda desde una perspectiva muy práctica.

David Ortinau anuncia que el runtime de .NET MAUI abandona Mono y se moverá a CoreCLR en la próxima versión 11, lo que supone un gran paso adelante para esta plataforma, con mejoras en rendimiento, compatibilidad y experiencia de desarrollo.

Los futuros ordenadores cuánticos podrán romper sin demasiado esfuerzo los sistemas de cifrado actuales, lo que hace que la criptografía post-cuántica sea un tema cada vez más importante. Khalid Abuhakmeh ha publicado una guía práctica para implementarla en .NET 10, con ejemplos de algoritmos y librerías disponibles.

Por último, David Fowler ha publicado un artículo muy interesante sobre cómo la IA nos ha hecho más rápidos, pero también creó nuevos cuellos de botella que obligan a cambiar procesos y hábitos.

Muchos más enlaces a contenidos interesantes de esta semana, a continuación.

Por si te lo perdiste...

.NET