Start Debugging

Блог

Страница 55 из 91

Parallel.ForEach vs Parallel.ForEachAsync vs Task.WhenAll в C#

Используйте Parallel.ForEach для нагружающей CPU работы над данными в памяти, Parallel.ForEachAsync для асинхронного ввода-вывода над множеством элементов с ограничением параллелизма, и Task.WhenAll для небольшого фиксированного fan-out, где нужно запустить все операции сразу и получить результаты.

StringBuilder против интерполяции строк в .NET 11: что выбрать?

Используйте интерполяцию строк для одноразовой сборки фиксированного набора значений; используйте StringBuilder, когда вы добавляете в цикле или по неизвестному числу фрагментов. Разделительная линия - это цикл, а не количество значений.

lock vs Monitor vs SemaphoreSlim vs System.Threading.Lock в C#

Четыре способа защитить критическую секцию в C# и матрица решений для выбора одного из них. Используйте System.Threading.Lock для синхронной взаимной блокировки на .NET 9+, SemaphoreSlim когда секция охватывает await, и Monitor только когда нужны Wait/Pulse.

Polly против resilience handlers в .NET 11: что выбрать?

Используйте resilience handler из Microsoft.Extensions.Http.Resilience для вызовов через HttpClient, потому что это Polly с понимающими HTTP значениями по умолчанию и телеметрией в одну строку. Обращайтесь к ResiliencePipeline из Polly напрямую только тогда, когда защищаете нечто, не являющееся HttpClient.

Скомпилированные запросы EF Core vs сырой SQL vs Dapper: что побеждает на пути чтения?

Для путей с большим количеством чтений в .NET 11 чистый EF Core с AsNoTracking держится в пределах ~5% от Dapper. Используйте скомпилированные запросы на профилированном горячем пути одной строки, а Dapper только для наименьшей задержки или для SQL, который LINQ не может выразить.

HttpClient vs HttpClientFactory vs Refit: что использовать в .NET 11?

Никогда не создавайте HttpClient на каждый запрос. Используйте IHttpClientFactory для управления временем жизни и добавляйте Refit сверху, когда нужен типизированный интерфейс вместо написанного вручную кода запроса. Чистый singleton HttpClient годится лишь для самых простых случаев.