fa
Feedback
C# 1001 notes

C# 1001 notes

رفتن به کانال در Telegram

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

نمایش بیشتر
6 613
مشترکین
+124 ساعت
+537 روز
+4730 روز
آرشیو پست ها
⚖️ 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

🔐 RBAC (Role-Based Access Control) в действии Как работает RBAC: - Роли получают набор разрешений - Пользователи получают ро
🔐 RBAC (Role-Based Access Control) в действии Как работает RBAC: - Роли получают набор разрешений - Пользователи получают роли → а значит и разрешения - Разрешения определяют, что пользователь может или не может делать 📌 Поток авторизации: 1. Пользователь проходит аутентификацию 2. Получает access token (JWT) 3. Делает API-запрос с токеном 4. Токен преобразуется в claims 5. Проверка прав (authorize) 6. Ответ API ⚡ Пример обработчика RBAC в C#:

internal sealed class PermissionAuthorizationHandler 
    : AuthorizationHandler<PermissionRequirement>
{
    protected override Task HandleRequirementAsync(
        AuthorizationHandlerContext context,
        PermissionRequirement requirement)
    {
        HashSet<string> permissions = context.User.GetPermissions();

        if (permissions.Contains(requirement.Permission))
        {
            context.Succeed(requirement);
        }
        return Task.CompletedTask;
    }
}

⚙️ Микросервисы начинают тормозить под нагрузкой? 💡 Узнайте, как масштабировать и оптимизировать систему с помощью CQRS и Ev
⚙️ Микросервисы начинают тормозить под нагрузкой? 💡 Узнайте, как масштабировать и оптимизировать систему с помощью CQRS и Event Sourcing на .NET Aspire. На открытом вебинаре «Оптимизация микросервисов с CQRS и Event Sourcing на .NET Aspire» 19 августа в 20:00 МСК разберем: ◽️ Ограничения классических микросервисов при высокой нагрузке. ◽️ Принципы разделения команд и запросов (CQRS) и хранения истории через Event Sourcing. ◽️ Практическую реализацию: сервис заказов с «команда-обработчик» и хранением событий в MongoDB. ◽️ Конфигурацию проекций для чтения данных. ❗️ Вы освоите оркестрацию через .NET Aspire (API Gateway, Order Service, база событий), внедрите логирование и трейсинг через OpenTelemetry, а также протестируете создание заказа, обновление статуса и визуализацию потока событий. ➡️ Посетите открытый урок и получите скидку на большое обучение «C# ASP.NET Core разработчик»: https://otus.pw/XyHp/?erid=2W5zFJisCGG Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.

🖥 Большинство .NET разработчиков никогда с этим не сталкиваются. Но это делает отладку в 10 раз проще. Стандартный вид при о
🖥 Большинство .NET разработчиков никогда с этим не сталкиваются. Но это делает отладку в 10 раз проще. Стандартный вид при отладке:
{Namespace.ObjectName}
Никакого контекста. Много путаницы. Но всего одной строкой кода? Теперь окно наблюдения показывает:

Order ORD-2025-002: Bob Evans - 89.50
Order ORD-2025-003: Maria Lee - 1200.00
В чём фишка? Используйте DebuggerDisplay. Добавляете этот атрибут в начало класса, чтобы контролировать, как будет отображаться информация о классе при отладке. В следующий раз, когда будете смотреть на {Namespace.ObjectName}, помните: так не обязательно должно быть.

⚙️☝️ Вебинар: Как Solidity обеспечивает доверие и прозрачность в взаимодействии пользователей ⏰ 19 августа в 20:00 МСК мы раз
⚙️☝️ Вебинар: Как Solidity обеспечивает доверие и прозрачность в взаимодействии пользователей19 августа в 20:00 МСК мы разберемся, как технология блокчейн и смарт-контракты создают доверенную среду для всех участников. На примере реальных кейсов мы покажем, как эта технология применяется в децентрализованных финансах, голосованиях, управлении поставками и других критичных областях, где важна надежность и предсказуемость операций. 💪 Мы расскажем, как писать прозрачные и надежные системы для самых актуальных и перспективных технологий. Запишитесь на вебинар и повышайте свою ценность на рынке. Все участникии получат индивидуальное предложение на курс «Solidity Developer». 👉 Для участия зарегистрируйтесь: https://otus.pw/Tdr7/?erid=2W5zFJetmkk Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.

📌 Как из HTML сгенерировать PDF в .NET с помощью PuppeteerSharp и Handlebars Этот пример показывает, как взять HTML-шаблон,
📌 Как из HTML сгенерировать PDF в .NET с помощью PuppeteerSharp и Handlebars Этот пример показывает, как взять HTML-шаблон, подставить данные через Handlebars и преобразовать его в PDF с помощью PuppeteerSharp. - Читаем HTML-шаблон InvoiceTemplate.html и компилируем его в функцию. - Подставляем данные, получаем готовый HTML. - PuppeteerSharp скачивает Chromium. - Открываем браузер в headless-режиме, создаём страницу, загружаем туда HTML. - Сохраняем страницу как PDF в формате A4, с фоном и нужными отступами. Код:

var template = File.ReadAllText("Templates/InvoiceTemplate.html");
var compiled = Handlebars.Compile(template);
string html = compiled(data);

// Скачать Chromium
var fetcher = new BrowserFetcher();
await fetcher.DownloadAsync();

// Рендер в PDF
using var browser = await Puppeteer.LaunchAsync(new LaunchOptions { Headless = true });
using var page = await browser.NewPageAsync();
await page.SetContentAsync(html);
byte[] pdf = await page.PdfDataAsync(new PdfOptions {
    Format = PaperFormat.A4,
    PrintBackground = true,
    MarginOptions = new MarginOptions { Top = "50px", Right = "20px", Bottom = "50px", Left = "20px" }
});
Таким образом можно автоматизировать генерацию счётов, отчётов или любых документов из HTML прямо в C#.

🔥 От разработчика до архитектора высоконагруженных систем! 🚀 Высоконагруженные системы — необходимость для крупных проектов
🔥 От разработчика до архитектора высоконагруженных систем! 🚀 Высоконагруженные системы — необходимость для крупных проектов. Пройдите тест, проверьте свои знания и получите скидку на курс «Highload Architect» от OTUS. Вы научитесь: ✅ Проектировать масштабируемые системы, способные обрабатывать миллионы запросов ✅ Оптимизировать производительность и работать с отказоустойчивыми архитектурами ✅ Использовать современные инструменты и технологии для создания высоконагруженных решений ✅ Применять лучшие практики в проектировании и разработке серверных приложений 📌 Пройдите тест и получите скидку на курс!  Подробности уточняйте у менеджера 👉 Пройти тест https://otus.pw/PsxZ/?erid=2W5zFJUR9X6 Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.

🖥 Полезная фишка в C#, о которой никто не знает Этот прием позволяет создавать высокопроизводительные .NET-приложения. Разра
🖥 Полезная фишка в C#, о которой никто не знает Этот прием позволяет создавать высокопроизводительные .NET-приложения. Разработка надёжных, масштабируемых и быстрых .NET-приложений во многом зависит от того, как вы организуете конкуренцию и обработку данных. Во время разработки .NET-приложений часто возникает необходимость передавать данные из одной части кода в другую. Ранее для этого использовали такие конструкции, как Queue<T>, ConcurrentQueue<T> или BlockingCollection<T>. Эти очереди оборачивали в классы и применяли для управления потоками данных. Однако у таких решений есть существенный минус — сильная связанность кода. 💊 Channels в C# это малоизвестная, но мощная фишка, которая предлагает современный способ построения безопасных, асинхронных и высоконагруженных .NET-приложений. Они реализуют паттерн "производитель-потребитель": один класс создаёт данные, другой их потребляет - при этом оба ничего не знают друг о друге. Ключевым архитектурным моментом при работе с каналами является выбор между ограниченными и неограниченными каналами. В этом гайд, где узнаете: 🟠Что такое C# Channels? 🟠 Ограниченные vs. неограниченные каналы 🟠 Фоновая обработка через Channels 🟠 Применение каналов в боевом ASP.NET Core-приложении 🟠 Лучшие практики и советы по работе с Channels

Ваши коллеги уже изучают .NET 10 → а вы готовы остаться на старых версиях? Каждый релиз .NET приносит десятки нововведений, к
Ваши коллеги уже изучают .NET 10 → а вы готовы остаться на старых версиях? Каждый релиз .NET приносит десятки нововведений, которые меняют подходы к разработке. Пока одни программисты осваивают новый синтаксис C# 14 и возможности runtime, другие продолжают писать код «по-старому» и удивляются, почему их решения выглядят устаревшими. .NET 10 — это не просто очередное обновление. Это LTS-версия, которая задаст стандарты разработки на ближайшие годы. Новый синтаксический сахар, field и extension в C# 14, обновления в MAUI и EF Core — всё это уже меняет то, как пишут современные приложения. Вебинар «Что нового в .NET 10 для разработчиков» в рамках курса «C# углубленный» → 18 августа, 20:00 → Антон Герасименко Программа: → Обзор ключевых нововведений .NET 10 и их практическое применение → Синтаксические конструкции C# 14: сахар, field, extension → Изменения в runtime и их влияние на производительность приложений  → Новые возможности MAUI и EF Core для современной разработки После вебинара вы поймёте, как адаптировать свой код под новые стандарты, сможете читать и писать современный C# код и не будете отставать от коллег, которые уже перешли на актуальные версии. Бесплатная регистрация — займите место в числе первых: https://otus.pw/MPD1A/?erid=2W5zFHPhUCQ Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.

⚙️ Утилиты для асинхронного программирования в .NET Если ты работаешь с async/await и хочешь писать более чистый, безопасный
⚙️ Утилиты для асинхронного программирования в .NET Если ты работаешь с async/await и хочешь писать более чистый, безопасный и удобный код — попробуй AsyncEx. Это мощная библиотека с готовыми асинхронными инструментами: 🔒 AsyncLock — асинхронный мьютекс: синхронизирует доступ к ресурсу *без блокировки потока*. 🚦 AsyncSemaphore — ограничивает количество одновременно выполняющихся задач, но *в асинхронной манере*. 📦 AsyncLazy — отложенная инициализация, которая запускается только при первом вызове. Работает в `async`-контексте. 📡 AsyncConditionVariable — асинхронная переменная состояния: удобно ожидать/уведомлять задачи о смене состояния ресурса. 📣 AsyncEvent — асинхронные события: подписка и вызов обработчиков без блокировки. 🧰 TaskHelper — утилиты для работы с задачами: ожидание, отмена, управление результатами. 🚀 Как начать? Просто установи через NuGet: https://github.com/StephenCleary/AsyncEx

💻 Мониторинг в высоконагруженных проектах 🔧 🔥 12 августа в 20:00 мск — открытый вебинар в OTUS. На вебинаре рассмотрим: -
💻 Мониторинг в высоконагруженных проектах 🔧 🔥 12 августа в 20:00 мск — открытый вебинар в OTUS. На вебинаре рассмотрим: - Почему мониторинг — ключ к стабильности высоконагруженных систем? - Методы и инструменты мониторинга, подходящие для проектов с высокой нагрузкой. - Как настроить и оптимизировать мониторинг для выявления и предотвращения проблем. - Как эффективно использовать метрики и логи для улучшения производительности. - Реальные кейсы мониторинга в сложных системах. 🎓 После вебинара вы: - Научитесь правильно настраивать мониторинг для высоконагруженных проектов. - Узнаете, как использовать данные мониторинга для повышения производительности и стабильности систем. - Получите практические рекомендации по оптимизации мониторинга. 🔧 Присоединяйтесь, чтобы научиться отслеживать и поддерживать стабильность систем, работающих под высокой нагрузкой! 🎁Все участники получат шаблон развертывания кластера RabbitMQ 👉 Регистрация https://otus.pw/2yrT/?erid=2W5zFJQ6ube Бесплатное занятие приурочено к старту курса Highload Architect Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.

🧰 .NET Community Toolkit — полезная коллекция библиотек и API для .NET-разработчиков, созданная Microsoft и поддерживаемая с
🧰 .NET Community Toolkit — полезная коллекция библиотек и API для .NET-разработчиков, созданная Microsoft и поддерживаемая сообществом. Этот набор инструментов не привязан к конкретному UI-фреймворку, а значит, его можно использовать в любых проектах — от десктопных приложений до веб-решений. Среди ключевых компонентов — CommunityToolkit.Mvvm (облегченная MVVM-библиотека, наследник MvvmLight), CommunityToolkit.HighPerformance (оптимизации для работы с памятью и многопоточностью) и CommunityToolkit.Diagnostics (удобные методы валидации). При этом все инструменты уже применяются в реальных продуктах Microsoft, включая новый Microsoft Store. Разработчики могут легко подключить NuGet-пакеты через Visual Studio, а документация доступна на Microsoft Docs. Планы по развитию публикуются в Roadmap, а для тестирования новых функций можно подключить пререлизные сборки. 🤖 GitHub

На E-CODE одно из фокусных направлений — C#. Доклады экспертов на главном IT-событии осени будут в треке Backend 💙 Заходите смотреть программу и регистрироваться — места улетают стремительно. Успех ждёт middle+ инженеров — команда Ozon Tech собирает в пространстве E-CODE профессиональное комьюнити. Общаться, меняться опытом и контактами, находить идеи и своё место в этом большом мире IT. Или хотя бы у сцены — в лайнапе E-CODE НТР, Заточка, ILWT и Нейромонах Феофан. E-CODE — событие, на котором вам стоит побывать. Зарегистрироваться.

🔥 Лучшая фича в ASP .NET Core 10 — Server-Sent Events (SSE) SSE — это упрощённая альтернатива SignalR: стриминг данных с сер
🔥 Лучшая фича в ASP .NET Core 10 — Server-Sent Events (SSE) SSE — это упрощённая альтернатива SignalR: стриминг данных с сервера к клиенту через обычный HTTP. 🔑 Плюсы SSE: ➡️ Односторонняя передача: только сервер → клиент ➡️ Работает через обычный HTTP (тип `text/event-stream`) ➡️ Не требует WebSocket-рукопожатия ➡️ Браузеры автоматически переподключаются ➡️ Очень низкие накладные расходы 🧪 Можно тестировать прямо через curl, Postman, Apidog, или HTTP request-файлы в IDE. Поддерживается во всех основных браузерах. 📌 Когда использовать SSE: ☑️ Лайв-ленты: акции, спорт, новости ☑️ Реальные уведомления: соцсети, алерты ☑️ Отслеживание прогресса: загрузки, долгие операции ☑️ Лайв-дэшборды: мониторинг, аналитика SSE идеально подходит, когда нужно пушить данные с сервера, но не нужен full-duplex как в WebSockets. 📦 Я сделал пример — Live Stock Market с исходниками для фронта и бэка. Пиши, если интересно!