uk
Feedback
C# 1001 notes

C# 1001 notes

Відкрити в Telegram

Регулярные короткие заметки по C# и .NET. Просто о сложном для каждого. admin - @haarrp

Показати більше
6 539
Підписники
-324 години
-17 днів
-230 день
Архів дописів
С EF Core можно делать действительно классные вещи — вот пример конфигурации сущности: - 🔒 Check constraint: Price > 0 — защ
С EF Core можно делать действительно классные вещи — вот пример конфигурации сущности: - 🔒 Check constraint: Price > 0 — защита данных прямо на уровне БД. - 🎯 Precision control — задаём точность для столбца Price, чтобы избежать ошибок округления. - 🧩 Unique index на Name — просто потому что можно (и полезно). Пример конфигурации:

builder.Property(p => p.Price)
    .HasPrecision(10, 2);

builder.HasCheckConstraint("CK_Product_Price_Positive", "Price > 0");

builder.HasIndex(p => p.Name)
    .IsUnique();
Следующий шаг — создать EF migration, чтобы применить эти настройки в базе данных. Если вы хотите разобраться глубже — вот отличный гайд по миграциям в EF Core: гайд

🔥 Открытый урок «C# и ORM: работаем с базой данных». Взаимодействие с базами данных - классический сценарий работы программы
🔥 Открытый урок «C# и ORM: работаем с базой данных». Взаимодействие с базами данных - классический сценарий работы программы. В рамках ОУ рассмотрим инструменты из категории ORM, которые позволяют используя язык C# работать с БД (на примере PostgreSQL) безопасно и эффективно. 🗓 21 октября в 20:00 МСК 🆓 Бесплатно. Урок в рамках старта курса «C# Developer». 🎯 О чём поговорим: ✔️ для чего нужны БД ✔️ Какие сценарии использования реляционных баз данных на примере PostgreSQL ✔️ Что такое ORM ✔️ Какие библиотеки (ORM) используются при разработке на C# для работы с базами данных ✔️CRUD операции (создать, читать, обновить, удалить запись в БД) 👥 Кому будет полезно: - Тем, кто понимает, как работает C#, но хочет узнать, как применять его в реальных программах - Тем, кто писал на других языках программирования, и хочет узнать, как работать с БД на платформе .Net 🔗 Ссылка на регистрацию: https://otus.pw/iONDI/?erid=2W5zFHHzeNc Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.

⚡ .NET Channel Publisher — простой способ строить настоящий async messaging 📌 Как это работает: - Использует System.Threadin
⚡ .NET Channel Publisher — простой способ строить настоящий async messaging 📌 Как это работает: - Использует System.Threading.Channels для асинхронной публикации событий - Сообщения пишутся в канал и обрабатываются в фоне, не блокируя поток - Поддержка CancellationToken для безопасной отмены 🔥 Плюсы: - Минимум кода — максимум гибкости - Высокая производительность и низкая задержка - Удобно для event-driven архитектуры и микросервисов На скриншоте: - Пример класса ChannelPublisher для отправки нотификаций - Трейсинг вызова Order.Service: POST orders показывает прозрачную обработку и асинхронность #dotnet #csharp #async #messaging

Что мне нравится в **.NET Aspire** 👇 👉 С ним невероятно просто запускать полезные сервисы. Всего в несколько строк кода мож
Что мне нравится в **.NET Aspire** 👇 👉 С ним невероятно просто запускать полезные сервисы. Всего в несколько строк кода можно поднять: - базу данных - Redis - LLM - reverse proxy - message broker Можно даже масштабировать сервисы, чтобы проверить сценарии с конкурентной нагрузкой. Если вы ещё не пробовали построить своё первое Aspire-приложение — у меня есть подробный гайд о том, как я мигрировал свой .NET проект в Aspire. 🟠Читать здесь: https://milanjovanovic.tech/blog/dotnet-aspire-a-game-changer-for-cloud-native-development

🌟 Знаете ли вы, что с помощью информационных атрибутов можно получить информацию о вызывающем методе? @csharp_ci
🌟 Знаете ли вы, что с помощью информационных атрибутов можно получить информацию о вызывающем методе? @csharp_ci

⚡️ .NET-приложения должны быть устойчивыми — и сделать их надежнее реально за пару минут. В .NET 8 и выше есть библиотеки от
⚡️ .NET-приложения должны быть устойчивыми — и сделать их надежнее реально за пару минут. В .NET 8 и выше есть библиотеки от Microsoft и обновлённый API Polly — популярной библиотеки для повышения надёжности и обработки сбоев. С Polly можно легко настроить стратегии: - повтор запросов (Retry) - резервные сценарии (Fallback) - ограничение времени (Timeout) - контроль частоты (Rate-limiting) - автоматическое отключение при сбоях (Circuit breaker) Эти механизмы помогают облачным приложениям оставаться живыми даже в условиях ошибок и перегрузок. Подробный разбор тут

🔥 Лучшая фича C# за последние годы? Pattern Matching Зачем он нужен: Pattern matching позволяет элегантно проверять объект н
🔥 Лучшая фича C# за последние годы? Pattern Matching Зачем он нужен: Pattern matching позволяет элегантно проверять объект на определённые свойства: - ✅ Является null или не null - ✅ Является объектом конкретного типа - ✅ Имеет свойство с определённым значением В связке со switch-выражениями и record-типами это превращает код в лаконичный и выразительный. 📌 Пример:

static string PrintShape(object shape) =>
    shape switch
    {
        null => "Нет объекта",
        Circle c => $"Круг с радиусом {c.Radius}",
        Rectangle { Width: > 0, Height: > 0 } r => $"Прямоугольник {r.Width}x{r.Height}",
        _ => "Неизвестная фигура"
    };

⚡️ dotnet/eShop — справочное .NET-приложение (reference application) 📌 Что это такое - Приложение-пример на .NET, которое ре
⚡️ dotnet/eShop — справочное .NET-приложение (reference application) 📌 Что это такое - Приложение-пример на .NET, которое реализует веб-сайт электронной коммерции (eCommerce) с архитектурой, основанной на сервисах. - Использует .NET 9. - Код лицензирован по MIT. 📌 Как запустить - Клонировать репозиторий. - Установить .NET 9 SDK. - Для Windows: можно использовать Visual Studio (2022 17.10+). - Можно запустить через Docker Desktop. - Через терминал: ```bash dotnet run --project src/eShop.AppHost/eShop.AppHost.csproj 📌 Особенности Пример данных каталога хранится в catalog.json, описания продуктов и брендов — вымышленные. Изображения продуктов сгенерированы с помощью DALL·E 3. Есть версия приложения, подготовленная для деплоя в Azure. 📌 Почему полезно - Подходит как учебный материал для изучения структуры реального .NET-приложения. - Демонстрирует современные практики: архитектура, CI/CD, микросервисы. - Можно использовать как стартовую точку для собственных проектов. #dotnet #eCommerce #ReferenceApp #MIT #Architecture #SampleProject #Microservices Репозиторий: https://github.com/dotnet/eShop

Готовились к LeetCode, но на интервью дали задачу «не по учебнику»? А может, думали, что знаете async/await, но на senior соб
Готовились к LeetCode, но на интервью дали задачу «не по учебнику»? А может, думали, что знаете async/await, но на senior собеседовании вас спросили про ConfigureAwait и CLR? Технические интервью в C# — это всегда стресс и неожиданные повороты. Где-то проверяют умение решать нестандартные задачи, где-то — глубину понимания работы платформы. Важно быть готовым к обоим сценариям. 📅 В сентябре пройдут сразу два бесплатных вебинара в рамках курса «C# Developer. Professional», которые помогут вам: → понять, что делать, если привычные паттерны не работают и идей нет; → прокачать навыки live-coding в реальном времени; → разобраться в тонкостях async/await, CLR и управления памятью; → научиться уверенно отвечать на вопросы уровня senior и проектировать системный дизайн. Вы получите практику и стратегию подготовки к интервью — от первых шагов до экспертных уровней. После вебинаров вы сможете превратить страх перед собеседованиями в уверенность и чётко показать свой уровень на интервью. 👉 Бесплатная регистрация по ссылке — успейте занять место: https://otus.pw/E3c8/?erid=2W5zFHKLZG4 Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.

⚡ .NET Aspire позволяет запускать фронтенд прямо из Vite В Community Toolkit появился пакет `Aspire.Hosting.NodeJS.Extensions
⚡ .NET Aspire позволяет запускать фронтенд прямо из Vite В Community Toolkit появился пакет `Aspire.Hosting.NodeJS.Extensions`, который позволяет интегрировать Node.js-приложения в .NET Aspire. 🔥 Что он даёт: - Запуск Vite-приложений напрямую из Aspire. - Поддержка npm, Yarn и pnpm — выбирай свой пакетный менеджер. - Автоустановка зависимостей перед стартом (`WithNpmPackageInstallation()`, WithYarnPackageInstallation(), `WithPnpmPackageInstallation()`). - Лёгкая интеграция фронтенда и бэкенда: всё управляется из одного места. 📌 Пример кода:

var builder = DistributedApplication.CreateBuilder(args);

builder.AddViteApp("vite-demo")
       .WithExternalHttpEndpoints();

builder.AddViteApp("yarn-demo", packageManager: "yarn")
       .WithExternalHttpEndpoints();

builder.AddViteApp("pnpm-demo", packageManager: "pnpm")
       .WithExternalHttpEndpoints();

builder.Build().Run();
💡 Итог: теперь запуск React/Vue/Angular через Vite можно встроить прямо в Aspire, без лишних шагов и костылей. 📌 Подробнее #dotnet #Aspire #NodeJS #Vite #Frontend

⚡ C# полезный совет Хотите ускорить работу со строками, когда нужно часто их конкатенировать? Не используйте обычный + в цикле — это создаёт лишние объекты в памяти. Вместо этого применяйте `StringBuilder`:

using System.Text;

var sb = new StringBuilder();
for (int i = 0; i < 1000; i++)
{
    sb.Append("строка ").Append(i).AppendLine();
}

string result = sb.ToString();
Console.WriteLine(result);
📌 Что это даёт: - StringBuilder не создаёт новую строку при каждой операции - Сильно экономит память и ускоряет код в циклах - Особенно полезно при работе с большими логами или генерацией отчётов

🔥 Успех в IT = скорость + знания + окружение Здесь ты найдёшь всё это — коротко, по делу и без воды. Пока другие ищут, где “подглядеть решение”, ты уже используешь самые свежие инструменты! AI: t.me/ai_machinelearning_big_data Python: t.me/pythonl Linux: t.me/linuxacademiya Собеседования DS: t.me/machinelearning_interview C++ t.me/cpluspluc Docker: t.me/DevopsDocker Хакинг: t.me/linuxkalii Devops: t.me/DevOPSitsec Data Science: t.me/data_analysis_ml Javascript: t.me/javascriptv C#: t.me/csharp_1001_notes Java: t.me/java_library Базы данных: t.me/sqlhub Python собеседования: t.me/python_job_interview Мобильная разработка: t.me/mobdevelop Golang: t.me/Golang_google React: t.me/react_tg Rust: t.me/rust_code ИИ: t.me/vistehno PHP: t.me/phpshka Android: t.me/android_its Frontend: t.me/front Big Data: t.me/bigdatai МАТЕМАТИКА: t.me/data_math Kubernets: t.me/kubernetc Разработка игр: https://t.me/gamedev Haskell: t.me/haskell_tg Физика: t.me/fizmat 💼 Папка с вакансиями: t.me/addlist/_zyy_jQ_QUsyM2Vi Папка Go разработчика: t.me/addlist/MUtJEeJSxeY2YTFi Папка Python разработчика: t.me/addlist/eEPya-HF6mkxMGIy Папка ML: https://t.me/addlist/2Ls-snqEeytkMDgy Папка FRONTEND: https://t.me/addlist/mzMMG3RPZhY2M2Iy 😆ИТ-Мемы: t.me/memes_prog 🇬🇧Английский: t.me/english_forprogrammers 🧠ИИ: t.me/vistehno 🎓954ГБ ОПЕНСОРС КУРСОВ: @courses 📕Ит-книги бесплатно: https://t.me/addlist/BkskQciUW_FhNjEy Подпишись, если хочешь быть в числе тех, кого зовут в топовые проекты!

🚫 EF Core + «репозитории» = лишний слой Часто советуют заворачивать EF Core в Repository Pattern. Но на практике это делает
🚫 EF Core + «репозитории» = лишний слой Часто советуют заворачивать EF Core в Repository Pattern. Но на практике это делает код только сложнее: - DbContext уже реализует Repository и Unit of Work - Репозитории со временем превращаются в «монстров» с десятками методов - Каждый новый фильтр = новая копипаста В итоге — абстракция над абстракцией и трудности с поддержкой. --- ✅ Что вместо этого? Specification Pattern Specification = маленький класс, описывающий правило или фильтр. Вы комбинируете их и получаете сложные запросы без раздутых репозиториев. Плюсы: - 🧩 Простая композиция правил - 🔍 Ясный и читаемый код - ♻️ Повторное использование условий - 🧪 Лёгкое тестирование 📌 Пример

// Бизнес-правило: активные клиенты с заказами за последние 30 дней
public sealed class ActiveCustomersSpec : Specification<Customer>
{
    public ActiveCustomersSpec(DateTime since)
    {
        Criteria = c => c.IsActive && c.Orders.Any(o => o.CreatedAt >= since);
        AddInclude(c => c.Orders);
    }
}

// Применение
var spec = new ActiveCustomersSpec(DateTime.UtcNow.AddDays(-30));
var customers = await db.Set<Customer>().Apply(spec).ToListAsync();
💡 Итог: EF Core = уже Repository + UoW Репозитории поверх EF Core → лишняя абстракция Specification Pattern → гибкость и читаемость без «метод-монстров»

⚖️ Monolith или microservices — не вопрос "что лучше". Важно другое: каждая архитектура даёт свои плюсы и минусы. Когда нужны
⚖️ Monolith или microservices — не вопрос "что лучше". Важно другое: каждая архитектура даёт свои плюсы и минусы. Когда нужны микросервисы: - независимые деплои - разные технологии под сервисы - гибкое масштабирование по частям Все остальные выгоды можно получить и в монолите. Поэтому мой выбор чаще всего — modular monolith: проще, дешевле, без лишней сложности. 📖 Подробнее: https://milanjovanovic.tech/modular-monolith-architecture?utm_source=X&utm_medium=social&utm_campaign=01.09.2025 #Architecture #Monolith #Microservices #SoftwareEngineering

🔥 Amplication — это инструмент с открытым исходным кодом для автоматического генерации серверной части .NET и Node.js прилож
🔥 Amplication — это инструмент с открытым исходным кодом для автоматического генерации серверной части .NET и Node.js приложений! 🌟 Он позволяет разработчикам быстро создавать API и соответствующую серверную логику, исключая необходимость вручную писать код для повторяющихся задач, таких как создание CRUD-операций, управление базой данных и аутентификация. Amplication ориентирован на ускорение разработки и избавление от рутины, предоставляя мощные возможности для конфигурирования и расширения с помощью плагинов и кастомных решений. 🔐 Лицензия: Apache-2.0 🖥 Github @csharp_ci

🔍 NetSonar — инструмент для сетевой диагностики от sn4k3 NetSonar — это лёгкая и кроссплатформенная утилита, которая помогае
+3
🔍 NetSonar — инструмент для сетевой диагностики от sn4k3 NetSonar — это лёгкая и кроссплатформенная утилита, которая помогает диагностировать сеть, визуализировать данные и управлять сетевыми интерфейсами. 🧰 Возможности: • Многопротокольные пинги: ICMP, TCP, UDP и HTTP — проверка доступности и измерение задержек • Управление интерфейсами: просмотр IP‑конфигураций, статистики и управление адаптерами в реальном времени • Сканирование сети: обнаружение устройств, подсетей и открытых портов • Современный UI: интерфейс на Avalonia + SukiUI с тёмной темой и графиками • Кроссплатформенность: работает на Windows, macOS и Linux (на базе .NET) • Открытый код: лицензия AGPL‑3.0 — можно адаптировать и дорабатывать 🛠 Установка: 🔹 Windows: 🖥 Github

GoSharp Weekend — летняя перезагрузка для backend-разработчиков на Go и C#. Спикеры — топовые инженеры Ozon Tech. Они расскаж
GoSharp Weekend — летняя перезагрузка для backend-разработчиков на Go и C#. Спикеры — топовые инженеры Ozon Tech. Они расскажут: 🟢 как превратить блокировку ресурсов в инструмент оптимизации, 🟢 почему важно контролировать количество входящего трафика при использовании API Gateway, 🟢 как защитить домен от DDoS. Помимо докладов: музыка, летние развлечения и закат на пирсе исторического яхт-клуба в центре Москвы. Кстати, ведущим C#-трека станет автор онлайн-книги .NET Platform Architecture и спикер многих конференций — Станислав Сидристый. Успейте забрать максимум от этого лета! Участие бесплатное — нужно только зарегистрироваться и дождаться приглашения.

🔥 Хотите разобраться в ASP.NET Core на практике? Репозиторий — это более 400+ римеров для всех версий ASP.NET Core (от 2.1 д
🔥 Хотите разобраться в ASP.NET Core на практике? Репозиторий — это более 400+ римеров для всех версий ASP.NET Core (от 2.1 до 10 Preview). Что внутри: - Minimal API, Blazor, SignalR, gRPC - Аутентификация, кэширование, health-checks - Middleware, Razor Pages, HTMX и многое другое Каждый пример запускается командой dotnet watch run и демонстрирует отдельную фичу. ⭐ Репо собрало уже 10k+ звёзд и считается одним из лучших ресурсов для изучения ASP.NET Core. 📌 Github

Ваши .NET проекты превратились в спагетти-код — пора перейти к Clean Architecture Пока одни разработчики продолжают страдать
Ваши .NET проекты превратились в спагетти-код — пора перейти к Clean Architecture Пока одни разработчики продолжают страдать с legacy-кодом, другие применяют Clean Architecture и создают гибкие, тестируемые приложения. Виктор Дзицкий покажет эволюционный путь от классической многослойной архитектуры к современным принципам проектирования. Вебинар «От N-Layer к Clean Architecture: эволюция проектирования .NET приложений» в рамках курса «C# Developer. Professional» → 27 августа, 20:00 Программа: → Сравнение подходов: классическая N-Layer vs современная Clean Architecture → Принцип инверсии зависимостей (DIP) и Dependency Injection как основа трансформации → Практическая демонстрация: как реорганизовать N-Layer проект в Clean Architecture → Достижение независимости бизнес-логики от инфраструктуры Бесплатная регистрация — превратите хаос в порядок: https://otus.pw/oUxz/?erid=2W5zFJASDdJ Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.

⚡ В EF Core чаще всего используют два подхода: - Database-First — быстрое создание моделей из готовой БД - Code-First — проек
⚡ В EF Core чаще всего используют два подхода: - Database-First — быстрое создание моделей из готовой БД - Code-First — проектирование схемы через C# классы и миграции Но оба могут тормозить разработку при сложных связях и настройках. 👉 Есть третий путь — Model-First. Вы визуально проектируете модель, а она автоматически превращается в EF Core сущности и схему БД. 🛠 Один из лучших инструментов — Entity Developer от Devart: - drag-and-drop интерфейс вместо ручного кода - меньше рутины и ошибок в конфигурации - точная генерация кода и SQL-скриптов - быстрее дизайн → генерация → обновление моделей Меньше кода ✍️, больше скорости 🚀. #dotnet #efcore #csharp #devtools