Вместо того чтобы дублировать конфигурацию в каждом .csproj, ты создаёшь один файл в корне и управляешь всем централизованно: версия языка, уровни предупреждений, Nullable, ImplicitUsings, Deterministic-сборки и даже версии NuGet-пакетов.
Подходит, если хочешь порядок в проектах и одинаковые правила для всей команды.
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡️ Полезное о блокировках в C#. Многие собеседования заваливаются именно здесь.
Коротко по сути:
Причина проста — выполнение может продолжиться на другом потоке, и гарантии взаимного исключения теряются.
Что использовать вместо `lock` в асинхронном коде:
-
-
-
-
Правильный шаблон:
1. Всегда используйте таймаут, чтобы избежать зависаний.
2. Освобождайте ресурс в `finally`, иначе возможна утечка блокировки.
Примерный подход:
- попытаться войти с ограничением времени
- выполнить критическую секцию
- гарантированно освободить семафор
Почему это важно:
В многопоточном и распределённом окружении неправильная синхронизация приводит к гонкам, дублированию запросов, «штормам» в кеше и нагрузке на внешний API.
Вопрос для практики:
Как реализовать блокировку на уровне базы данных, чтобы синхронизировать несколько инстансов приложения?
Ответ — в разборе по distributed locking:
milanjovanovic.tech/blog/distributed-locking-in-dotnet-coordinating-work-across-multiple-instances
Коротко по сути:
lock не работает в `async`-методах. Причина проста — выполнение может продолжиться на другом потоке, и гарантии взаимного исключения теряются.
Что использовать вместо `lock` в асинхронном коде:
-
SemaphoreSlim — основной вариант -
Semaphore -
Mutex -
Monitor (в синхронных сценариях)Правильный шаблон:
1. Всегда используйте таймаут, чтобы избежать зависаний.
2. Освобождайте ресурс в `finally`, иначе возможна утечка блокировки.
Примерный подход:
- попытаться войти с ограничением времени
- выполнить критическую секцию
- гарантированно освободить семафор
Почему это важно:
В многопоточном и распределённом окружении неправильная синхронизация приводит к гонкам, дублированию запросов, «штормам» в кеше и нагрузке на внешний API.
Вопрос для практики:
Как реализовать блокировку на уровне базы данных, чтобы синхронизировать несколько инстансов приложения?
Ответ — в разборе по distributed locking:
milanjovanovic.tech/blog/distributed-locking-in-dotnet-coordinating-work-across-multiple-instances
DelegatingHandler - это удобный способ внедрять сквозную логику в каждый HTTP-запрос: авторизацию, логирование, метрики, ретраи и любые другие политики, не трогая основной код.
Пример обработчика аутентификации:
- добавляет заголовок Authorization
- подставляет корректный User-Agent
- затем передаёт управление следующему звену конвейера
Это позволяет централизованно контролировать конфигурацию запросов и избегать дублирования логики во всех сервисах.
Подходит для чистой архитектуры, микросервисов и SDK, где важна единообразная обработка запросов.
Please open Telegram to view this post
VIEW IN TELEGRAM
🚀 .NET 10 - реально мощный релиз. Вот что важно знать 👇
.NET 10 и C# 14 вышли 11 ноября 2025 года.
Это LTS-версия - поддержку будут выпускать до ноября 2028 года,
поэтому её можно спокойно брать для продакшна.
🔥 Главное
✔ C# 14
Новый синтаксис и возможности языка:
• Extension Members — расширения прямо в типах
• Null-Conditional Assignment - безопасные присваивания
•
• Модификаторы у параметров лямбд
• Частичные конструкторы и события
✔ File-Based Apps
Теперь можно просто создать один
без
✔ ASP.NET Core
• Валидация в Minimal APIs
• JSON Patch
• SSE (Server-Sent Events)
• Поддержка OpenAPI 3.1
✔ EF Core
• Complex Types можно делать optional
• JSON и struct внутри Complex Types
• LeftJoin / RightJoin
• Named Query Filters
• ExecuteUpdate работает с JSON-колонками
• В ExecuteUpdate теперь можно использовать обычные лямбды
Полный гайд здесь:
↳ https://antondevtips.com/blog/new-features-in-dotnet-10-and-csharp-14/?utm_source=twitter&utm_medium=social&utm_campaign=04-12-2025
.NET 10 и C# 14 вышли 11 ноября 2025 года.
Это LTS-версия - поддержку будут выпускать до ноября 2028 года,
поэтому её можно спокойно брать для продакшна.
🔥 Главное
✔ C# 14
Новый синтаксис и возможности языка:
• Extension Members — расширения прямо в типах
• Null-Conditional Assignment - безопасные присваивания
•
field keyword — точный контроль над авто-свойствами • Модификаторы у параметров лямбд
• Частичные конструкторы и события
✔ File-Based Apps
Теперь можно просто создать один
.cs файл и запускать приложение - без
.sln, без .csproj. Быстро, просто, удобно.✔ ASP.NET Core
• Валидация в Minimal APIs
• JSON Patch
• SSE (Server-Sent Events)
• Поддержка OpenAPI 3.1
✔ EF Core
• Complex Types можно делать optional
• JSON и struct внутри Complex Types
• LeftJoin / RightJoin
• Named Query Filters
• ExecuteUpdate работает с JSON-колонками
• В ExecuteUpdate теперь можно использовать обычные лямбды
Полный гайд здесь:
↳ https://antondevtips.com/blog/new-features-in-dotnet-10-and-csharp-14/?utm_source=twitter&utm_medium=social&utm_campaign=04-12-2025