
Como seguramente sabréis, Blazor es la gran apuesta de Microsoft para el desarrollo de aplicaciones web con .NET. Sólo hay que ver la cantidad de novedades que han introducido en la última versión para darse cuenta de que están poniendo toda la carne en el asador y, de alguna forma, está convirtiéndose en la opción preferida para el desarrollo de este tipo de aplicaciones.
Pues bien, es un placer anunciaros que, tras varios meses de preparación, hace unos días hemos puesto en marcha el nuevo curso de desarrollo de aplicaciones Web con Blazor en .NET 8, como siempre, en CampusMVP.
Ha sido un trabajo duro, porque esta última versión ha venida cargada de novedades (sobre todo en lo relativo al nuevo modelo unificado propuesto por las Blazor Web Apps) y hemos tenido que revisar en profundidad y reescribir parte del contenido del curso, rehacer ejemplos y regrabar material audiovisual, todo con el objetivo de seguir siendo el mejor y más completo curso de Blazor del mercado.
En este post voy a intentar responder a las siguientes preguntas:
- ¿Qué es Blazor?
- ¿Por qué es interesante aprender a desarrollar con Blazor?
- Si ya hemos trabajado con ASP.NET Core y MVC, ¿siguen valiendo estos conocimientos?
- ¿En qué consiste el curso de desarrollo con Blazor?
- ¿Cuáles son los contenidos del curso?
- ¿Qué conocimientos previos se necesitan para seguir el curso?
- Me convence, ¿cuándo empezamos?

Ahí van los enlaces recopilados durante la semana pasada. Espero que os resulten interesantes. :-)
Por si te lo perdiste...
- Evitar que código de pruebas llegue a producción usando directivas de compilación de C#
José María Aguilar - Ejecutar tareas en segundo plano en ASP.NET 4.5.2
José María Aguilar
.NET Core / .NET
- Volcados de memoria en Kubernetes para depurar aplicaciones .NET
CampusMVP - Enable the new TerminalLogger in .NET 8 SDK automatically
Gérald Barré - How to Correctly Implement IDisposable Interface in C#
Code Maze - General Performance Tip: Optimizing Attributes
David McCarter - Exploring .NET frozen segments
Kevin Gosse - Using default interface methods for performance gains in IHeaderDictionary
Andrew Lock - How to Pass Complex Parameters to Theory in xUnit
Code Maze - How to Get appsettings.json Content as a Dictionary in .NET Core
Code Maze - .NET 8–It’s time to get rid of these flaky tests!
Bart Wullems - Resilience and chaos engineering
Martin Tomka

Hace unos días, veíamos por aquí los constructores primarios de C#, una característica recientemente introducida en el lenguaje que permite omitir el constructor si en éste lo único que hacemos es asignar los valores de sus parámetros a campos de la clase.
Veamos un ejemplo a modo de recordatorio rápido:
// Clase con constructor tradicional
public class Person
{
private readonly string _name;
public Person(string name)
{
_name = name;
}
public override string ToString() => _name;
}
// La misma clase usando el constructor primario:
public class Person(string name)
{
public override string ToString() => name;
}
Como comentamos en el post, los parámetros del constructor primarios eran internamente convertidos en campos privados de la clase, generados automáticamente e inaccesibles desde el código.

Ahí van los enlaces recopilados durante la semana pasada. Espero que os resulten interesantes. :-)
Por si te lo perdiste...
- Modificar en tiempo de ejecución el valor de los settings de una aplicación ASP.NET Core
José María Aguilar - Eager loading en Entity Framework: mejora drástica del rendimiento en acceso a datos
José María Aguilar
.NET Core / .NET
- Thread.Sleep vs Task.Delay en .NET: cómo introducir retardos en tu código correctamente
José Manuel Alarcón - The fastest way to create WireMock.NET mappings
Cezary Piątek - How to Create XML Files in C#
Matjaz Prtenjak - GetHashCode() in .NET Core
Bart Wullems - Consuming WCF Services in .NET 8 (.NET Core is no more!)
DeeDee Walsh - Tales from the .NET Migration Trenches - Hangfire
Jimmy Bogard - Checking if a collection is empty in C#
Gérald Barré - From Hours to Seconds: The Journey to a 630x Faster Batch Job
Fati Iseni - How to Build a URL Shortener With .NET
Milan Jovanović - Understanding C# 8 default interface methods
Andrew Lock - .NET Tasks, List’s ForEach, and Problems
Khalid Abuhakmeh - How to Select Multiple Records Based on a List of IDs Using LINQ
Bozo Spoljaric - How to Properly Create Message Templates for Logging in C#
Vadzim Zylevich - .NET 8–Refresh memory limit
Bart Wullems - How To Use ArraySegment in C#
Kamil Pakula - Using Azure OpenAI Service to generate images with DALL-E in .NET
Daniel Gomez - HigLabo.Mapper, Creating Fastest Object Mapper in the world with Expression Tree in 10 Days
Higty - Matrix Inverse from Scratch Using SVD Decomposition with C#
James McCaffrey - SearchValues object become better with .NET 9
Steven Giesel

Hace ya algunos años, con la llegada de C# 9, los records nos mostraron otra forma de crear objetos distinta a los clásicos constructores. Ya entonces, y únicamente en aquél ámbito, se comenzó a hablar de primary constructors, pero no ha sido hasta C# 12 cuando se ha implementado de forma completa esta característica en el lenguaje.
En este post vamos a ver de qué se trata, cómo podemos utilizarlos y peculiaridades que hay que tener en cuenta.

Ahí van los enlaces recopilados durante la semana pasada. Espero que os resulten interesantes. :-)
Por si te lo perdiste...
- ¿Usar booleanos? ¿Sí, no, a veces?
José María Aguilar - Generar archivos Excel como un señor con ClosedXml
José María Aguilar
.NET Core / .NET
- A Practical Guide to Modular Monoliths with .NET
Charles Chen - How To Remove HTML Tags From a String in C#
Code Maze - Fortifying Your .NET Project
Dick van Straaten - To Upgrade or Not to Upgrade: Is .NET 8 Worth the Leap from .NET 6?
DeeDee Walsh - SerilogTracing
Nicholas Blumhardt - How to get assembly code generated by the JIT for a C# method
Gérald Barré - How to Truncate a String in .NET
Code Maze - How to Escape Curly Brackets and Special Characters in C#
Lennart Pries - A Range kata implementation in C#
Mark Seemann - How to Maximize the Browser Window With Selenium in C#
Semir Teskeredzic - Testing your incremental generator pipeline outputs are cacheable: Creating a source generator
Andrew Lock - C# Tip: ObservableCollection - a data type to intercept changes to the collection
Davide Bellone - How to Check if Items of a List Exist in Another List in C#
Martin Chege - Microsoft Office's RTC (Real-Time Channel) migration to modern .NET
Gilad Oren - Three new LINQ methods in .NET 9
Steven Giesel - Fastest Way to Convert a JObject to a Dictionary in C#
Code Maze