🧼 Как элегантно работать с конфигами в .NET?
Раньше я просто тянул значения напрямую из
Это быстро надоедает: много повторений, легко ошибиться, сложно валидировать.
Сейчас всегда использую Options pattern — и вот почему:
✅ Привязываешь конфигурацию к строго типизированным классам
✅ Добавляешь валидацию через аннотации
✅ Чисто внедряешь настройки через DI (`IOptions<T>` или `IOptionsSnapshot<T>`)
Отлично работает для:
-
- фичефлагов
- конфигов внешних сервисов
Если хочешь чистый и масштабируемый код — лучше подхода пока нет.
Раньше я просто тянул значения напрямую из
IConfiguration
. Это быстро надоедает: много повторений, легко ошибиться, сложно валидировать.
Сейчас всегда использую Options pattern — и вот почему:
✅ Привязываешь конфигурацию к строго типизированным классам
✅ Добавляешь валидацию через аннотации
✅ Чисто внедряешь настройки через DI (`IOptions<T>` или `IOptionsSnapshot<T>`)
Отлично работает для:
-
appsettings.json
- фичефлагов
- конфигов внешних сервисов
Если хочешь чистый и масштабируемый код — лучше подхода пока нет.
🔍 Anton DevTips делится 650+ эксклюзивными бесплатными материалами для прокачки C#, .NET, ASP .NET Core, EF Core и микросервисов:
Отдельные статьи и примеры из подборки:
- Structured Logging & Distributed Tracing в микросервисах
↳ https://antondevtips.com/blog/how-to-implement-structured-logging-and-distributed-tracing-for-microservices-with-seq
- Server-Sent Events в ASP .NET Core 10
↳ https://antondevtips.com/blog/real-time-server-sent-events-in-asp-net-core
- Логирование API-запросов и ответов
↳ https://antondevtips.com/blog/logging-requests-and-responses-for-api-requests-and-httpclient-in-aspnetcore
- GraphQL c HotChocolate
↳ https://antondevtips.com/blog/getting-started-with-hot-chocolate-graphql
- WebAPI на FastEndpoints + Vertical Slice
↳ https://antondevtips.com/blog/productive-web-api-development-with-fast-endpoints-and-vertical-slice-architecture-in-dotnet
- AI-чат-бот на OpenAI + Postgres
↳ https://antondevtips.com/blog/building-multimodel-ai-chat-bot-in-dotnet-with-chat-gpt-and-database-branching-in-neon-postgres
- Мультитенант в Azure Functions
↳ https://antondevtips.com/blog/building-a-multitenant-cloud-application-with-azure-functions-and-neon-postgres
- Snapshot-тестирование с Verify
↳ https://antondevtips.com/blog/how-to-simplify-assertions-in-unit-and-integration-tests-with-verify-in-dotnet
- Интеграционные тесты c WireMock
↳ https://antondevtips.com/blog/how-to-test-integrations-with-apis-using-wiremock-in-dotnet
- Best Practices для ASP .NET Core Integration Testing
↳ https://antondevtips.com/blog/asp-net-core-integration-testing-best-practises?utm_source=linkedin&utm_medium=social&utm_campaign=01-04-2025
- MongoDB + .NET: практики
↳ https://antondevtips.com/blog/best-practices-when-working-with-mongodb-in-dotnet
- CLI-приложения на .NET
↳ https://antondevtips.com/blog/how-to-create-command-line-console-applications-in-dotnet
- Кастомизация ASP .NET Core Identity
↳ https://antondevtips.com/blog/how-to-customize-aspnet-core-identity-with-efcore-for-your-project-needs
- Миграции для нескольких БД в EF Core
↳ https://antondevtips.com/blog/how-to-create-migrations-for-multiple-databases-in-ef-core
- Управление жизненным циклом DbContext
↳ https://antondevtips.com/blog/how-to-manage-ef-core-dbcontext-lifetime
- Views, Stored Procedures и Functions в EF Core
↳ https://antondevtips.com/blog/calling-views-stored-procedures-and-functions-in-ef-core
✔️ PDF-сборник ресурсов — docs, туториалы, блоги, видео
↳ https://anton-devtips.kit.com/dotnet-resources?utm_source=linkedin&utm_medium=social&utm_campaign=dotnet-resources-july-2025
Отдельные статьи и примеры из подборки:
- Structured Logging & Distributed Tracing в микросервисах
↳ https://antondevtips.com/blog/how-to-implement-structured-logging-and-distributed-tracing-for-microservices-with-seq
- Server-Sent Events в ASP .NET Core 10
↳ https://antondevtips.com/blog/real-time-server-sent-events-in-asp-net-core
- Логирование API-запросов и ответов
↳ https://antondevtips.com/blog/logging-requests-and-responses-for-api-requests-and-httpclient-in-aspnetcore
- GraphQL c HotChocolate
↳ https://antondevtips.com/blog/getting-started-with-hot-chocolate-graphql
- WebAPI на FastEndpoints + Vertical Slice
↳ https://antondevtips.com/blog/productive-web-api-development-with-fast-endpoints-and-vertical-slice-architecture-in-dotnet
- AI-чат-бот на OpenAI + Postgres
↳ https://antondevtips.com/blog/building-multimodel-ai-chat-bot-in-dotnet-with-chat-gpt-and-database-branching-in-neon-postgres
- Мультитенант в Azure Functions
↳ https://antondevtips.com/blog/building-a-multitenant-cloud-application-with-azure-functions-and-neon-postgres
- Snapshot-тестирование с Verify
↳ https://antondevtips.com/blog/how-to-simplify-assertions-in-unit-and-integration-tests-with-verify-in-dotnet
- Интеграционные тесты c WireMock
↳ https://antondevtips.com/blog/how-to-test-integrations-with-apis-using-wiremock-in-dotnet
- Best Practices для ASP .NET Core Integration Testing
↳ https://antondevtips.com/blog/asp-net-core-integration-testing-best-practises?utm_source=linkedin&utm_medium=social&utm_campaign=01-04-2025
- MongoDB + .NET: практики
↳ https://antondevtips.com/blog/best-practices-when-working-with-mongodb-in-dotnet
- CLI-приложения на .NET
↳ https://antondevtips.com/blog/how-to-create-command-line-console-applications-in-dotnet
- Кастомизация ASP .NET Core Identity
↳ https://antondevtips.com/blog/how-to-customize-aspnet-core-identity-with-efcore-for-your-project-needs
- Миграции для нескольких БД в EF Core
↳ https://antondevtips.com/blog/how-to-create-migrations-for-multiple-databases-in-ef-core
- Управление жизненным циклом DbContext
↳ https://antondevtips.com/blog/how-to-manage-ef-core-dbcontext-lifetime
- Views, Stored Procedures и Functions в EF Core
↳ https://antondevtips.com/blog/calling-views-stored-procedures-and-functions-in-ef-core
↳ https://anton-devtips.kit.com/dotnet-resources?utm_source=linkedin&utm_medium=social&utm_campaign=dotnet-resources-july-2025
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥 Лучшая фича в ASP .NET Core 10 — Server-Sent Events (SSE)
SSE — это упрощённая альтернатива SignalR: стриминг данных с сервера к клиенту через обычный HTTP.
🔑 Плюсы SSE:
➡️ Односторонняя передача: только сервер → клиент
➡️ Работает через обычный HTTP (тип `text/event-stream`)
➡️ Не требует WebSocket-рукопожатия
➡️ Браузеры автоматически переподключаются
➡️ Очень низкие накладные расходы
🧪 Можно тестировать прямо через
📌 Когда использовать SSE:
☑️ Лайв-ленты: акции, спорт, новости
☑️ Реальные уведомления: соцсети, алерты
☑️ Отслеживание прогресса: загрузки, долгие операции
☑️ Лайв-дэшборды: мониторинг, аналитика
SSE идеально подходит, когда нужно пушить данные с сервера, но не нужен full-duplex как в WebSockets.
📦 Я сделал пример — Live Stock Market с исходниками для фронта и бэка. Пиши, если интересно!
SSE — это упрощённая альтернатива SignalR: стриминг данных с сервера к клиенту через обычный HTTP.
🔑 Плюсы SSE:
➡️ Односторонняя передача: только сервер → клиент
➡️ Работает через обычный HTTP (тип `text/event-stream`)
➡️ Не требует WebSocket-рукопожатия
➡️ Браузеры автоматически переподключаются
➡️ Очень низкие накладные расходы
🧪 Можно тестировать прямо через
curl
, Postman, Apidog, или HTTP request-файлы в IDE. Поддерживается во всех основных браузерах.📌 Когда использовать SSE:
☑️ Лайв-ленты: акции, спорт, новости
☑️ Реальные уведомления: соцсети, алерты
☑️ Отслеживание прогресса: загрузки, долгие операции
☑️ Лайв-дэшборды: мониторинг, аналитика
SSE идеально подходит, когда нужно пушить данные с сервера, но не нужен full-duplex как в WebSockets.
📦 Я сделал пример — Live Stock Market с исходниками для фронта и бэка. Пиши, если интересно!
This media is not supported in your browser
VIEW IN TELEGRAM
На E-CODE одно из фокусных направлений — C#. Доклады экспертов на главном IT-событии осени будут в треке Backend 💙
Заходите смотреть программу и регистрироваться — места улетают стремительно.
Успех ждёт middle+ инженеров — команда Ozon Tech собирает в пространстве E-CODE профессиональное комьюнити. Общаться, меняться опытом и контактами, находить идеи и своё место в этом большом мире IT.
Или хотя бы у сцены — в лайнапе E-CODE НТР, Заточка, ILWT и Нейромонах Феофан.
E-CODE — событие, на котором вам стоит побывать.
Зарегистрироваться.⬅
Заходите смотреть программу и регистрироваться — места улетают стремительно.
Успех ждёт middle+ инженеров — команда Ozon Tech собирает в пространстве E-CODE профессиональное комьюнити. Общаться, меняться опытом и контактами, находить идеи и своё место в этом большом мире IT.
Или хотя бы у сцены — в лайнапе E-CODE НТР, Заточка, ILWT и Нейромонах Феофан.
E-CODE — событие, на котором вам стоит побывать.
Зарегистрироваться.
Please open Telegram to view this post
VIEW IN TELEGRAM
🧰 .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
Среди ключевых компонентов — CommunityToolkit.Mvvm (облегченная MVVM-библиотека, наследник MvvmLight), CommunityToolkit.HighPerformance (оптимизации для работы с памятью и многопоточностью) и CommunityToolkit.Diagnostics (удобные методы валидации). При этом все инструменты уже применяются в реальных продуктах Microsoft, включая новый Microsoft Store.
Разработчики могут легко подключить NuGet-пакеты через Visual Studio, а документация доступна на Microsoft Docs. Планы по развитию публикуются в Roadmap, а для тестирования новых функций можно подключить пререлизные сборки.
🤖 GitHub
⚙️ Утилиты для асинхронного программирования в .NET
Если ты работаешь с
Это мощная библиотека с готовыми асинхронными инструментами:
🔒 AsyncLock — асинхронный мьютекс: синхронизирует доступ к ресурсу *без блокировки потока*.
🚦 AsyncSemaphore — ограничивает количество одновременно выполняющихся задач, но *в асинхронной манере*.
📦 AsyncLazy — отложенная инициализация, которая запускается только при первом вызове. Работает в `async`-контексте.
📡 AsyncConditionVariable — асинхронная переменная состояния: удобно ожидать/уведомлять задачи о смене состояния ресурса.
📣 AsyncEvent — асинхронные события: подписка и вызов обработчиков без блокировки.
🧰 TaskHelper — утилиты для работы с задачами: ожидание, отмена, управление результатами.
🚀 Как начать?
Просто установи через NuGet:
https://github.com/StephenCleary/AsyncEx
Если ты работаешь с
async/await
и хочешь писать более чистый, безопасный и удобный код — попробуй AsyncEx.Это мощная библиотека с готовыми асинхронными инструментами:
🔒 AsyncLock — асинхронный мьютекс: синхронизирует доступ к ресурсу *без блокировки потока*.
🚦 AsyncSemaphore — ограничивает количество одновременно выполняющихся задач, но *в асинхронной манере*.
📦 AsyncLazy — отложенная инициализация, которая запускается только при первом вызове. Работает в `async`-контексте.
📡 AsyncConditionVariable — асинхронная переменная состояния: удобно ожидать/уведомлять задачи о смене состояния ресурса.
📣 AsyncEvent — асинхронные события: подписка и вызов обработчиков без блокировки.
🧰 TaskHelper — утилиты для работы с задачами: ожидание, отмена, управление результатами.
🚀 Как начать?
Просто установи через NuGet:
https://github.com/StephenCleary/AsyncEx
Этот прием позволяет создавать высокопроизводительные .NET-приложения.
Разработка надёжных, масштабируемых и быстрых .NET-приложений во многом зависит от того, как вы организуете конкуренцию и обработку данных.
Во время разработки .NET-приложений часто возникает необходимость передавать данные из одной части кода в другую.
Ранее для этого использовали такие конструкции, как
Queue<T>
, ConcurrentQueue<T>
или BlockingCollection<T>
.Эти очереди оборачивали в классы и применяли для управления потоками данных.
Однако у таких решений есть существенный минус — сильная связанность кода.
Channels в C# это малоизвестная, но мощная фишка, которая предлагает современный способ построения безопасных, асинхронных и высоконагруженных .NET-приложений.
Они реализуют паттерн "производитель-потребитель": один класс создаёт данные, другой их потребляет - при этом оба ничего не знают друг о друге.
Ключевым архитектурным моментом при работе с каналами является выбор между ограниченными и неограниченными каналами.
В этом гайд, где узнаете:
ASP.NET Core
-приложенииPlease open Telegram to view this post
VIEW IN TELEGRAM
🔥 От разработчика до архитектора высоконагруженных систем! 🚀
Высоконагруженные системы — необходимость для крупных проектов. Пройдите тест, проверьте свои знания и получите скидку на курс «Highload Architect» от OTUS.
Вы научитесь:
✅ Проектировать масштабируемые системы, способные обрабатывать миллионы запросов
✅ Оптимизировать производительность и работать с отказоустойчивыми архитектурами
✅ Использовать современные инструменты и технологии для создания высоконагруженных решений
✅ Применять лучшие практики в проектировании и разработке серверных приложений
📌 Пройдите тест и получите скидку на курс! Подробности уточняйте у менеджера
👉 Пройти тест https://otus.pw/PsxZ/?erid=2W5zFJUR9X6
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.
Высоконагруженные системы — необходимость для крупных проектов. Пройдите тест, проверьте свои знания и получите скидку на курс «Highload Architect» от OTUS.
Вы научитесь:
✅ Проектировать масштабируемые системы, способные обрабатывать миллионы запросов
✅ Оптимизировать производительность и работать с отказоустойчивыми архитектурами
✅ Использовать современные инструменты и технологии для создания высоконагруженных решений
✅ Применять лучшие практики в проектировании и разработке серверных приложений
📌 Пройдите тест и получите скидку на курс! Подробности уточняйте у менеджера
👉 Пройти тест https://otus.pw/PsxZ/?erid=2W5zFJUR9X6
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.
📌 Как из HTML сгенерировать PDF в .NET с помощью PuppeteerSharp и Handlebars
Этот пример показывает, как взять HTML-шаблон, подставить данные через Handlebars и преобразовать его в PDF с помощью PuppeteerSharp.
- Читаем HTML-шаблон InvoiceTemplate.html и компилируем его в функцию.
- Подставляем данные, получаем готовый HTML.
- PuppeteerSharp скачивает Chromium.
- Открываем браузер в headless-режиме, создаём страницу, загружаем туда HTML.
- Сохраняем страницу как PDF в формате A4, с фоном и нужными отступами.
Код:
Таким образом можно автоматизировать генерацию счётов, отчётов или любых документов из HTML прямо в C#.
Этот пример показывает, как взять 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#.
⚙️☝️ Вебинар: Как Solidity обеспечивает доверие и прозрачность в взаимодействии пользователей
⏰ 19 августа в 20:00 МСК мы разберемся, как технология блокчейн и смарт-контракты создают доверенную среду для всех участников. На примере реальных кейсов мы покажем, как эта технология применяется в децентрализованных финансах, голосованиях, управлении поставками и других критичных областях, где важна надежность и предсказуемость операций.
💪 Мы расскажем, как писать прозрачные и надежные системы для самых актуальных и перспективных технологий.
Запишитесь на вебинар и повышайте свою ценность на рынке. Все участникии получат индивидуальное предложение на курс «Solidity Developer».
👉 Для участия зарегистрируйтесь: https://otus.pw/Tdr7/?erid=2W5zFJetmkk
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.
⏰ 19 августа в 20:00 МСК мы разберемся, как технология блокчейн и смарт-контракты создают доверенную среду для всех участников. На примере реальных кейсов мы покажем, как эта технология применяется в децентрализованных финансах, голосованиях, управлении поставками и других критичных областях, где важна надежность и предсказуемость операций.
💪 Мы расскажем, как писать прозрачные и надежные системы для самых актуальных и перспективных технологий.
Запишитесь на вебинар и повышайте свою ценность на рынке. Все участникии получат индивидуальное предложение на курс «Solidity Developer».
👉 Для участия зарегистрируйтесь: https://otus.pw/Tdr7/?erid=2W5zFJetmkk
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.
Но это делает отладку в 10 раз проще.
Стандартный вид при отладке:
{Namespace.ObjectName}
Никакого контекста. Много путаницы.
Но всего одной строкой кода?
Теперь окно наблюдения показывает:
Order ORD-2025-002: Bob Evans - 89.50
Order ORD-2025-003: Maria Lee - 1200.00
В чём фишка?
Используйте
DebuggerDisplay
.Добавляете этот атрибут в начало класса, чтобы контролировать, как будет отображаться информация о классе при отладке.
В следующий раз, когда будете смотреть на
{Namespace.ObjectName}
, помните: так не обязательно должно быть.Please open Telegram to view this post
VIEW IN TELEGRAM
🔐 RBAC (Role-Based Access Control) в действии
Как работает RBAC:
- Роли получают набор разрешений
- Пользователи получают роли → а значит и разрешения
- Разрешения определяют, что пользователь может или не может делать
📌 Поток авторизации:
1. Пользователь проходит аутентификацию
2. Получает access token (JWT)
3. Делает API-запрос с токеном
4. Токен преобразуется в claims
5. Проверка прав (authorize)
6. Ответ API
⚡ Пример обработчика RBAC в C#:
}
Как работает 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;
}
}
⚡ В EF Core чаще всего используют два подхода:
- Database-First — быстрое создание моделей из готовой БД
- Code-First — проектирование схемы через C# классы и миграции
Но оба могут тормозить разработку при сложных связях и настройках.
👉 Есть третий путь — Model-First.
Вы визуально проектируете модель, а она автоматически превращается в EF Core сущности и схему БД.
🛠 Один из лучших инструментов — Entity Developer от Devart:
- drag-and-drop интерфейс вместо ручного кода
- меньше рутины и ошибок в конфигурации
- точная генерация кода и SQL-скриптов
- быстрее дизайн → генерация → обновление моделей
Меньше кода ✍️, больше скорости 🚀.
#dotnet #efcore #csharp #devtools
- Database-First — быстрое создание моделей из готовой БД
- Code-First — проектирование схемы через C# классы и миграции
Но оба могут тормозить разработку при сложных связях и настройках.
👉 Есть третий путь — Model-First.
Вы визуально проектируете модель, а она автоматически превращается в EF Core сущности и схему БД.
🛠 Один из лучших инструментов — Entity Developer от Devart:
- drag-and-drop интерфейс вместо ручного кода
- меньше рутины и ошибок в конфигурации
- точная генерация кода и SQL-скриптов
- быстрее дизайн → генерация → обновление моделей
Меньше кода ✍️, больше скорости 🚀.
#dotnet #efcore #csharp #devtools
Ваши .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.
Пока одни разработчики продолжают страдать с 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.
🔥 Хотите разобраться в ASP.NET Core на практике?
Репозиторий — это более 400+ римеров для всех версий ASP.NET Core (от 2.1 до 10 Preview).
Что внутри:
- Minimal API, Blazor, SignalR, gRPC
- Аутентификация, кэширование, health-checks
- Middleware, Razor Pages, HTMX и многое другое
Каждый пример запускается командой
⭐ Репо собрало уже 10k+ звёзд и считается одним из лучших ресурсов для изучения ASP.NET Core.
📌 Github
Репозиторий — это более 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
GoSharp Weekend — летняя перезагрузка для backend-разработчиков на Go и C#.
Спикеры — топовые инженеры Ozon Tech. Они расскажут:
🟢 как превратить блокировку ресурсов в инструмент оптимизации,
🟢 почему важно контролировать количество входящего трафика при использовании API Gateway,
🟢 как защитить домен от DDoS.
Помимо докладов: музыка, летние развлечения и закат на пирсе исторического яхт-клуба в центре Москвы.
Кстати, ведущим C#-трека станет автор онлайн-книги .NET Platform Architecture и спикер многих конференций — Станислав Сидристый.
Успейте забрать максимум от этого лета!
Участие бесплатное — нужно только зарегистрироваться и дождаться приглашения.
Спикеры — топовые инженеры Ozon Tech. Они расскажут:
Помимо докладов: музыка, летние развлечения и закат на пирсе исторического яхт-клуба в центре Москвы.
Кстати, ведущим C#-трека станет автор онлайн-книги .NET Platform Architecture и спикер многих конференций — Станислав Сидристый.
Успейте забрать максимум от этого лета!
Участие бесплатное — нужно только зарегистрироваться и дождаться приглашения.
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from C# (C Sharp) programming
🔍 NetSonar — инструмент для сетевой диагностики от sn4k3
NetSonar — это лёгкая и кроссплатформенная утилита, которая помогает диагностировать сеть, визуализировать данные и управлять сетевыми интерфейсами.
🧰 Возможности:
• Многопротокольные пинги: ICMP, TCP, UDP и HTTP — проверка доступности и измерение задержек
• Управление интерфейсами: просмотр IP‑конфигураций, статистики и управление адаптерами в реальном времени
• Сканирование сети: обнаружение устройств, подсетей и открытых портов
• Современный UI: интерфейс на Avalonia + SukiUI с тёмной темой и графиками
• Кроссплатформенность: работает на Windows, macOS и Linux (на базе .NET)
• Открытый код: лицензия AGPL‑3.0 — можно адаптировать и дорабатывать
🛠 Установка:
🔹 Windows:
🖥 Github
NetSonar — это лёгкая и кроссплатформенная утилита, которая помогает диагностировать сеть, визуализировать данные и управлять сетевыми интерфейсами.
🧰 Возможности:
• Многопротокольные пинги: ICMP, TCP, UDP и HTTP — проверка доступности и измерение задержек
• Управление интерфейсами: просмотр IP‑конфигураций, статистики и управление адаптерами в реальном времени
• Сканирование сети: обнаружение устройств, подсетей и открытых портов
• Современный UI: интерфейс на Avalonia + SukiUI с тёмной темой и графиками
• Кроссплатформенность: работает на Windows, macOS и Linux (на базе .NET)
• Открытый код: лицензия AGPL‑3.0 — можно адаптировать и дорабатывать
🛠 Установка:
🔹 Windows:
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM