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!
lunes, 29 de junio de 2026
Teclado con teclas distintas para el salto de línea

En Blazor no existen "signals", como en Angular. Sin embargo, es posible crear algo similar, para conseguir que la UI se actualice automáticamente cuando cambian los datos. Steven Giesel nos explica cómo hacerlo.

Rick Strahl nos explica qué opciones tenemos para crear aplicaciones Windows que puedan ejecutarse tanto en modo consola como en modo GUI, y por qué ninguna de ellas es perfecta 👉 

Los caracteres de salto de línea no son simplemente a CR y LF. En este post Gérald Barré nos explica qué debemos tener en cuenta para gestionarlos correctamente en .NET.

Y por último, ¿sabías que desde la llegada de .NET 10 hace unos meses puedes ejecutar un archivo C# directamente desde la línea de comandos? Puedes crear scripts, pequeñas utilidades y ejecutarlas de forma rápida sin necesidad de crear y compilar un proyecto completo. En este post te explico cómo hacerlo.

Enlaces a más contenidos interesantes, a continuación.

Por si te lo perdiste...

.NET

martes, 23 de junio de 2026
Una máquina de café (servicio singleton) rodeada de tazas de café (servicio scoped)

Seguro que alguna vez os habéis encontrado con la necesidad de usar un servicio registrado como scoped desde el código de un servicio registrado como singleton. Un caso típico es cuando en una aplicación ASP.NET Core tenemos un servicio corriendo en segundo plano (vaya, un BackgroundService) y necesitamos acceder a servicios que usan bases de datos o cualquier otro recurso que está normalmente asociado al ámbito de una petición HTTP.

Si intentamos inyectar directamente un servicio scoped dentro de un servicio singleton, obtendremos un error al iniciar la aplicación, durante el proceso de validación del árbol de dependencias, ya que el contenedor de .NET no permite esta combinación:

System.AggregateException: 'Some services are not able to be constructed 
(Error while validating the service descriptor 'ServiceType: 
Microsoft.Extensions.Hosting.IHostedService Lifetime: Singleton ImplementationType: 
MyBackgroundService': Cannot consume scoped service 'MyDbContext' from 
singleton 'Microsoft.Extensions.Hosting.IHostedService'.)'

Una posibilidad (peligrosa: ¡no hacer!) es deshabilitar esta validación inicial, pero esto solo ocultaría el problema y casi con toda seguridad nos llevaría más tarde a errores en tiempo de ejecución que podrían ser difíciles de diagnosticar y, en el peor de los casos, incluso tumbarnos la aplicación.

En este post vamos a ver la forma correcta de resolver el problema creando ámbitos personalizados dentro del servicio singleton, y usándolos para resolver los servicios scoped que necesitemos.

lunes, 22 de junio de 2026
Desarrolladores dirigiéndose hacia un edificio con el logo de Blazor

¿Deberíamos adoptar ya Blazor como nuestro framework de desarrollo por defecto para las aplicaciones web? Arunachalam Kandasamy analiza los puntos a favor y en contra y nos da consejos para tomar la decisión.

Y sin cambiar de framework, Arulraj Aboorvasamy nos explica cómo gestionar el estado de la aplicación en Blazor para construir aplicaciones escalables.

Se ha presentado Angular 22, y José Manuel Alarcón nos hace un resumen de las novedades más importantes, con muchos ejemplos de código para que podamos entenderlas mejor.

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

Por si te lo perdiste...

.NET

lunes, 15 de junio de 2026
Dos celdas en el Area 51: una para Claude Fable y otra para Claude Mythos

Esta semana hay que destacar tanto el anuncio a bombo y platillo de los modelos Claude Fable y Mythos 5 de Anthropic... como su retirada unos días después, debido una orden del gobierno de Estados Unidos por motivos de seguridad nacional. Un mundo curioso este 😉 

También se ha lanzado .NET 11 Preview 5, con novedades interesantes como el soporte para JSONL, full outer joins en LINQ, mejoras en runtime asíncrono, una nueva plantilla de proyecto MCP, jerarquías cerradas en C#, validación en cliente y QuickGrid en Blazor SSR, parámetros proporcionados por variables de sesión y muchas más cosas, que podéis encontrar detalladas aquí.

Por último, destacar un artículo sobre el principio DRY, uno de los más utilizados mientras programamos, pero que a menudo se malinterpreta. Milan Jovanović nos explica por qué y cómo debemos aplicarlo correctamente.

El resto de enlaces a contenidos interesantes, a continuación.

Por si te lo perdiste...

.NET

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