C# 1001 notes – Telegram
C# 1001 notes
6.6K subscribers
374 photos
10 videos
2 files
333 links
Регулярные короткие заметки по C# и .NET.

Просто о сложном для каждого.

admin - @haarrp
Download Telegram
🖥 Directory.Build.props - простой способ задать единые настройки для всей .NET-солюции.

Вместо того чтобы дублировать конфигурацию в каждом .csproj, ты создаёшь один файл в корне и управляешь всем централизованно: версия языка, уровни предупреждений, Nullable, ImplicitUsings, Deterministic-сборки и даже версии NuGet-пакетов.

Подходит, если хочешь порядок в проектах и одинаковые правила для всей команды.
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡️ Полезное о блокировках в C#. Многие собеседования заваливаются именно здесь.

Коротко по сути:

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
✔️ Delegating Handlers в .NET: как правильно добавлять сквозную логику для HttpClient

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 - безопасные присваивания
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
💻 Асинхронная обработка данных в высоконагруженных системах 🚀

🔥 16 декабря в 20:00 мск — открытый урок в OTUS.

📌 На вебинаре вы узнаете:
— Как использовать асинхронную обработку данных для масштабирования сервисов
— Как работают очереди сообщений, веб-сокеты и другие инструменты асинхронного взаимодействия
— Как выглядит архитектура реального проекта: от веб-сервера до брокера сообщений и базы данных
— Какие узкие места чаще всего встречаются в асинхронных системах и как их устранять

🎓 После занятия вы:
— Разберётесь в принципах асинхронной архитектуры и её влиянии на производительность
— Научитесь применять асинхронные подходы
— Получите реальные примеры архитектурных решений

👉 Регистрация https://otus.pw/Ayxv/?erid=2W5zFJbb2u6

Бесплатный урок приурочен к старту курса Highload Architect, на котором вы освоите архитектуры, выдерживающие миллионы запросов в секунду, и научитесь проектировать системы без узких мест. 🚀

Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.
Крутая статья - «Building an Event Queue in ASP.NET Core» от Deepumi.

🔹 Она показывает, как правильно построить очередь событий внутри ASP.NET Core-приложения:
• использовать встроенные механизмы (middleware / DI)
• распределять события между обработчиками
• обрабатывать события асинхронно и надёжно

🔹 Такая архитектура помогает:
• реализовать decoupled компоненты, которые не знают друг о друге
• централизовать событие-поток (логика, оповещения, триггеры и т.п.)
• легче масштабировать и тестировать код

Если работаешь с ASP.NET Core и хочешь сделать систему событий - стоит заглянуть.

Подробнее: deepumi.com/blog/building-an-event-queue-in-aspnet-core.html
🚦 Feature Flags в .NET - как управлять релизами без redeploy

Feature flags (фиче-флаги) позволяют включать и выключать функциональность на лету, без повторного деплоя и риска для продакшена.

Идея простая:
код задеплоен → поведение управляется конфигурацией.

Что это даёт на практике:
— Постепенные релизы
Можно включить новую фичу сначала для 1%, 10% или конкретной группы пользователей.
— Быстрый rollback
Если что-то пошло не так — просто выключаете флаг. Без откатов и срочных хотфиксов.
— A/B тесты
Разные пользователи получают разное поведение одного и того же кода.
— Targeting пользователей

Фичи можно включать:
• по user id
• по роли
• по региону
• по environment (dev / staging / prod)

— Меньше фиче-веток
Код живёт в main, а не за флагами в git.

В .NET обычно используют:
- Microsoft.FeatureManagement
- Azure App Configuration
- LaunchDarkly / Unleash / ConfigCat

Где это особенно полезно:
- публичные API
- high-traffic сервисы
- SaaS-продукты
- экспериментальные и рискованные фичи

Коротко:
Feature flags превращают релиз из «одного опасного момента» в управляемый процесс.

Это один из самых мощных инструментов для зрелой backend-архитектуры.

👉 Подробнее