2026-05-25 comparisoncsharpdotnet List<T> vs Span<T> vs ReadOnlySpan<T> en C#: cuándo usar cada uno Elige List<T> para colecciones ampliables, Span<T> para vistas modificables y ReadOnlySpan<T> para lectura. Límites de vida útil y async.
2026-05-25 comparisoncsharpdotnet Parallel.ForEach vs Parallel.ForEachAsync vs Task.WhenAll en C# Usa Parallel.ForEach para trabajo intensivo de CPU sobre datos en memoria, Parallel.ForEachAsync para E/S asíncrona sobre muchos elementos con un límite de concurrencia, y Task.WhenAll para un fan-out fijo y pequeño donde quieres todas las operaciones en vuelo y necesitas los resultados.
2026-05-25 dotnet-11comparisoncsharp StringBuilder vs interpolación de cadenas en .NET 11: ¿cuál deberías usar? Usa la interpolación de cadenas para componer de una sola vez un conjunto fijo de valores; usa StringBuilder cuando agregas en un bucle o sobre un número desconocido de fragmentos. La línea divisoria es el bucle, no la cantidad de valores.
2026-05-24 dotnet-11aspnetcoreopenapi ASP.NET Core en .NET 11 Preview 4 le ensena a OpenAPI el metodo HTTP QUERY .NET 11 Preview 4 hace que la generacion de OpenAPI en ASP.NET Core reconozca HTTP QUERY como una operacion de primera clase en OpenAPI 3.2, con un respaldo elegante para documentos 3.0 y 3.1.
2026-05-24 comparisoncsharpdotnet lock vs Monitor vs SemaphoreSlim vs System.Threading.Lock en C# Cuatro formas de proteger una sección crítica en C#, y una matriz de decisión para elegir una. Usa System.Threading.Lock para exclusión mutua síncrona en .NET 9+, SemaphoreSlim cuando la sección cruza un await, y Monitor solo cuando necesitas Wait/Pulse.
2026-05-24 comparisonpollyresilience Polly vs. resilience handlers en .NET 11: ¿cuál deberías usar? Usa el resilience handler de Microsoft.Extensions.Http.Resilience para las llamadas con HttpClient, porque es Polly con valores predeterminados que entienden HTTP y telemetría en una sola línea. Recurre a ResiliencePipeline de Polly directamente solo cuando protejas algo que no sea un HttpClient.
2026-05-24 comparisoncsharpdotnet Task.Run vs Task.Factory.StartNew vs ThreadPool.QueueUserWorkItem Tres formas de enviar trabajo al thread pool en C# y cuál elegir. Usa Task.Run para casi todo, ThreadPool.QueueUserWorkItem<TState> para fire-and-forget sin asignaciones, y Task.Factory.StartNew solo para LongRunning o un planificador personalizado.
2026-05-23 dotnet-11csharpperformance .NET 11 agrega compresión Deflate y GZip sin asignaciones .NET 11 Preview 4 incorpora DeflateEncoder, GZipEncoder y ZLibEncoder más sus decodificadores, para comprimir directamente en un Span<byte> con OperationStatus, sin necesidad de un Stream.
2026-05-23 comparisonef-coredapper Consultas compiladas de EF Core vs SQL sin procesar vs Dapper: cual gana en el camino de lectura? Para rutas con muchas lecturas en .NET 11, EF Core puro con AsNoTracking queda dentro de ~5% de Dapper. Usa consultas compiladas en una ruta caliente de fila unica perfilada, y Dapper solo para la menor latencia o el SQL que LINQ no puede expresar.
2026-05-23 comparisonhttpclienthttpclientfactory HttpClient vs HttpClientFactory vs Refit: ¿cuál deberías usar en .NET 11? Nunca crees un HttpClient por solicitud. Usa IHttpClientFactory para gestionar el ciclo de vida, y añade Refit encima cuando quieras una interfaz tipada en lugar de escribir el código de solicitud a mano. Un HttpClient singleton sin más solo sirve para los casos más simples.