🔐 Блог DevelopersVoice выпустил отличный гайд по **10 главным уязвимостям веб‑приложений с примерами на .NET.
Что внутри:
• Инъекции и XSS
• Ошибки аутентификации
• Уязвимые зависимости
• SSRF и плохая конфигурация
• Проблемы с логированием и безопасным дизайном
📌 Всё с практическими советами: как обнаружить, как исправить, как не допустить.
Полный гайд тут: https://developersvoice.com/blog/secure-coding/owasp-top-ten
#OWASP #SecureCoding #DotNet #WebSecurity #DevTips
Что внутри:
• Инъекции и XSS
• Ошибки аутентификации
• Уязвимые зависимости
• SSRF и плохая конфигурация
• Проблемы с логированием и безопасным дизайном
📌 Всё с практическими советами: как обнаружить, как исправить, как не допустить.
Полный гайд тут: https://developersvoice.com/blog/secure-coding/owasp-top-ten
#OWASP #SecureCoding #DotNet #WebSecurity #DevTips
📌 PolySharp — удобный способ использовать новые фичи C# на старых версиях .NET. Этот NuGet-пакет работает как source-генератор, автоматически подбирая нужные полифиллы в зависимости от целевой платформы. Для работы достаточно добавить ссылку на PolySharp, установить последнюю версию C# и можно писать современный код даже для .NET Framework или UWP.
Инструмент обладает умной генерацией только необходимых типов. Например, если компилятору C# 13 нужен
🤖 GitHub
@csharp_ci
Инструмент обладает умной генерацией только необходимых типов. Например, если компилятору C# 13 нужен
[IsExternalInit]
для init-only свойств, PolySharp создаст его за кулисами. При этом он не трогает фичи, требующие поддержки рантайма, но покрывает огромный пласт синтаксических улучшений — от nullable-аннотаций до интерполированных строковых обработчиков. 🤖 GitHub
@csharp_ci
Какое исключение выдается, если протокол, поддерживаемый префиксом URI, недействителен?
Anonymous Quiz
10%
URLNotFound
29%
NotSupportedException
49%
UriFormatException
12%
URLSourceNotFound
🔥 .NET Aspire: как упростить Service Discovery в микросервисах
Вместо ручной настройки адресов и портов, фреймворк .NET Aspire позволяет упростить обнаружение сервисов с помощью декларативного подхода.
🔹 Конфигурация через
🔹 Сервисы автоматически "обнаруживаются" и подключаются
🔹 Поддержка локальной разработки, контейнеров и облака
🔹 Логи, метрики, health checks — встроены
📌 Aspire — это не просто упрощение разработки, это фундамент для масштабируемых .NET-приложений.
🧠 Полный разбор — в блоге:
[how-dotnet-aspire-simplifies-service-discovery](https://www.milanjovanovic.tech/blog/how-dotnet-aspire-simplifies-service-discovery)
Подпишись, чтобы не пропускать важные новинки .NET и облачной разработки.
Вместо ручной настройки адресов и портов, фреймворк .NET Aspire позволяет упростить обнаружение сервисов с помощью декларативного подхода.
🔹 Конфигурация через
.AddProject()
и .WithReference()
🔹 Сервисы автоматически "обнаруживаются" и подключаются
🔹 Поддержка локальной разработки, контейнеров и облака
🔹 Логи, метрики, health checks — встроены
📌 Aspire — это не просто упрощение разработки, это фундамент для масштабируемых .NET-приложений.
🧠 Полный разбор — в блоге:
[how-dotnet-aspire-simplifies-service-discovery](https://www.milanjovanovic.tech/blog/how-dotnet-aspire-simplifies-service-discovery)
Подпишись, чтобы не пропускать важные новинки .NET и облачной разработки.
😈 Хитрая задачка на C# — замыкания и ловушка в цикле
Что выведет этот код?
На первый взгляд кажется, что будет:
Но на самом деле вывод:
💡 Почему?
Все лямбды замкнулись на одну и ту же переменную i, и когда они выполняются — i уже стало 5.
✅ Как исправить:
Теперь всё работает как ожидается.
🧠 Замыкания в C# захватывают переменные, а не их значения! Аккуратнее с циклами и лямбдами.
Что выведет этот код?
var actions = new List<Action>();
for (int i = 0; i < 5; i++)
{
actions.Add(() => Console.WriteLine(i));
}
foreach (var action in actions)
{
action();
}
На первый взгляд кажется, что будет:
0
1
2
3
4
Но на самом деле вывод:
5
5
5
5
5
💡 Почему?
Все лямбды замкнулись на одну и ту же переменную i, и когда они выполняются — i уже стало 5.
✅ Как исправить:
for (int i = 0; i < 5; i++)
{
int copy = i;
actions.Add(() => Console.WriteLine(copy));
}
Теперь всё работает как ожидается.
🧠 Замыкания в C# захватывают переменные, а не их значения! Аккуратнее с циклами и лямбдами.
Почти каждый разработчик допускал эту ошибку.
Что не так с этим кодом?
На первый взгляд всё кажется логичным:
🔸 API-эндпоинт регистрации пользователя вызывает
🔸
🔸 EmailService через
Но если присмотреться, метод
В чём проблема с
Вот суть:
❌
Если внутри
Вместо этого приложение может тихо упасть или начать вести себя непредсказуемо.
Почему так происходит?
Методы
Исключения из async void проходят мимо стандартных механизмов обработки.
Правильный подход:
✅ Всегда возвращай Task
Запомни:
Что не так с этим кодом?
На первый взгляд всё кажется логичным:
UserService
UserService
сохраняет пользователя в базу и вызывает EmailService
SmtpClient
отправляет письмоНо если присмотреться, метод
SendWelcomeEmail
объявлен как async void
.В чём проблема с
async void
?Вот суть:
async void
делает невозможным отлов исключений.Если внутри
SendEmailAsync()
произойдёт исключение — catch
его не перехватит.Вместо этого приложение может тихо упасть или начать вести себя непредсказуемо.
Почему так происходит?
Методы
async void
не возвращают Task, поэтому вызывающий код не может их await-ить и обрабатывать ошибки.Исключения из async void проходят мимо стандартных механизмов обработки.
Правильный подход:
Запомни:
async void
допустим только для обработчиков событий, где возвращаемый void обязателен.Please open Telegram to view this post
VIEW IN TELEGRAM
Правильный способ построения асинхронных API в .NET
Большинство API работают по простому шаблону:
🔸 Клиент отправляет запрос
🔸 Сервер выполняет работу
🔸 Сервер возвращает ответ
Такой подход отлично работает для быстрых операций — например, получения данных или простых обновлений.
А что насчёт длительных операций?
Речь о задачах вроде:
> обработки больших файлов
> генерации отчётов
> конвертации видео
Такие процессы могут занимать от нескольких минут до часов.
Вот как можно правильно строить асинхронные API: читать
Как сообщить клиенту, что его запрос обработан?
Есть два подхода:
🔸 PULL — клиент опрашивает API, чтобы узнать статус
🔸 PUSH — сервер сам уведомляет клиента (через WebSocket, email и т.д.)
Большинство API работают по простому шаблону:
Такой подход отлично работает для быстрых операций — например, получения данных или простых обновлений.
А что насчёт длительных операций?
Речь о задачах вроде:
> обработки больших файлов
> генерации отчётов
> конвертации видео
Такие процессы могут занимать от нескольких минут до часов.
Вот как можно правильно строить асинхронные API: читать
Как сообщить клиенту, что его запрос обработан?
Есть два подхода:
Please open Telegram to view this post
VIEW IN TELEGRAM
🧠 Задача: "Сколько раз выполнится блок Console.WriteLine?"
❓Вопрос:
Что выведет программа?
🔍 Разбор:
На первый взгляд кажется, что программа выведет:
1
2
3
📎 Но на самом деле она выведет:
0
1
2
Почему?
Оператор obj++ — это постфиксный инкремент. Он:
сначала вызывает implicit operator int для текущего значения,
а затем вызывает operator ++.
То есть порядок такой:
Console.WriteLine(obj++) вызывает implicit int до инкремента
только потом ++ увеличивает значение.
✅ Что это проверяет:
Знание порядка вызова операторов (++ и implicit)
Понимание поведения постфиксных операций в .NET
Умение читать и анализировать перегрузки операторов
@csharp_1001_notes
public class Program
{
public static void Main()
{
var obj = new Counter();
for (int i = 0; i < 3; i++)
{
Console.WriteLine(obj++);
}
}
}
public class Counter
{
private int _value = 0;
public static Counter operator ++(Counter c)
{
c._value++;
return c;
}
public static implicit operator int(Counter c)
{
return c._value;
}
}
❓Вопрос:
Что выведет программа?
🔍 Разбор:
1
2
3
📎 Но на самом деле она выведет:
0
1
2
Почему?
Оператор obj++ — это постфиксный инкремент. Он:
сначала вызывает implicit operator int для текущего значения,
а затем вызывает operator ++.
То есть порядок такой:
Console.WriteLine(obj++) вызывает implicit int до инкремента
только потом ++ увеличивает значение.
✅ Что это проверяет:
Знание порядка вызова операторов (++ и implicit)
Понимание поведения постфиксных операций в .NET
Умение читать и анализировать перегрузки операторов
@csharp_1001_notes
🔥 𝟮𝟬 Полезных статей для изучения ASP.NET Core
1. Как заменить исключения на Result-паттерн
↳ https://antondevtips.com/blog/how-to-replace-exceptions-with-result-pattern-in-dotnet
2. Как логировать запросы и ответы API
↳ https://antondevtips.com/blog/logging-requests-and-responses-for-api-requests-and-httpclient-in-aspnetcore
3. Как реализовать refresh-токены и отзыв токенов
↳ https://antondevtips.com/blog/how-to-implement-refresh-tokens-and-token-revocation-in-aspnetcore
4. Как создавать и конвертировать PDF-документы
↳ https://antondevtips.com/blog/how-to-create-and-convert-pdf-documents-in-aspnetcore
5. Как писать собственные middleware
↳ https://antondevtips.com/blog/how-to-create-custom-middlewares-in-asp-net-core
6. Серверные события в реальном времени (SSE)
↳ https://antondevtips.com/blog/real-time-server-sent-events-in-asp-net-core
7. Лучшие практики аутентификации и авторизации
↳ https://antondevtips.com/blog/authentication-and-authorization-best-practices-in-aspnetcore
8. Лучший способ маппинга объектов
↳ https://antondevtips.com/blog/the-best-way-to-map-objects-in-dotnet-in-2024
9. Лучший способ валидации объектов
↳ https://antondevtips.com/blog/the-best-way-to-validate-objects-in-dotnet-in-2024
10. Паттерн Options и работа с конфигурацией
↳ https://antondevtips.com/blog/master-configuration-in-asp-net-core-with-the-options-pattern
11. Как повысить производительность Web API
↳ https://antondevtips.com/blog/how-to-increase-performance-of-web-apis-in-dotnet
12. 15 типичных ошибок при создании Web API
↳ https://antondevtips.com/blog/top-15-mistakes-developers-make-when-creating-web-apis
13. Как реализовать кэширование
↳ https://antondevtips.com/blog/how-to-implement-caching-strategies-in-dotnet
14. Быстрый старт с FastEndpoints
↳ https://antondevtips.com/blog/getting-started-with-fastendpoints-for-building-web-apis-in-dotnet
15. Деплой приложений .NET в Azure через Aspire
↳ https://antondevtips.com/blog/how-to-deploy-dotnet-application-to-azure-using-neon-postgres-and-dotnet-aspire
16. 15 ошибок, которые совершают .NET-разработчики
↳ https://antondevtips.com/blog/top-15-mistakes-dotnet-developers-make-how-to-avoid-common-pitfalls
17. Лучшие практики повышения качества кода
↳ https://antondevtips.com/blog/best-practices-for-increasing-code-quality-in-dotnet-projects
18. Как создать мультиарендное приложение
↳ https://antondevtips.com/blog/how-to-implement-multitenancy-in-asp-net-core-with-ef-core
19. Архитектура на основе вертикальных срезов
↳ https://antondevtips.com/blog/vertical-slice-architecture-the-best-ways-to-structure-your-project
20. Как структурировать проект с Clean Architecture + Vertical Slices
↳ https://antondevtips.com/blog/the-best-way-to-structure-your-dotnet-projects-with-clean-architecture-and-vertical-slices
📥 Скачать дорожную карту по ASP.NET Core на 2025 год:
↳ https://antondevtips.com/roadmap/aspnetcore?utm_source=linkedin&utm_medium=social&utm_campaign=aspnetcore-roadmap-2025
1. Как заменить исключения на Result-паттерн
↳ https://antondevtips.com/blog/how-to-replace-exceptions-with-result-pattern-in-dotnet
2. Как логировать запросы и ответы API
↳ https://antondevtips.com/blog/logging-requests-and-responses-for-api-requests-and-httpclient-in-aspnetcore
3. Как реализовать refresh-токены и отзыв токенов
↳ https://antondevtips.com/blog/how-to-implement-refresh-tokens-and-token-revocation-in-aspnetcore
4. Как создавать и конвертировать PDF-документы
↳ https://antondevtips.com/blog/how-to-create-and-convert-pdf-documents-in-aspnetcore
5. Как писать собственные middleware
↳ https://antondevtips.com/blog/how-to-create-custom-middlewares-in-asp-net-core
6. Серверные события в реальном времени (SSE)
↳ https://antondevtips.com/blog/real-time-server-sent-events-in-asp-net-core
7. Лучшие практики аутентификации и авторизации
↳ https://antondevtips.com/blog/authentication-and-authorization-best-practices-in-aspnetcore
8. Лучший способ маппинга объектов
↳ https://antondevtips.com/blog/the-best-way-to-map-objects-in-dotnet-in-2024
9. Лучший способ валидации объектов
↳ https://antondevtips.com/blog/the-best-way-to-validate-objects-in-dotnet-in-2024
10. Паттерн Options и работа с конфигурацией
↳ https://antondevtips.com/blog/master-configuration-in-asp-net-core-with-the-options-pattern
11. Как повысить производительность Web API
↳ https://antondevtips.com/blog/how-to-increase-performance-of-web-apis-in-dotnet
12. 15 типичных ошибок при создании Web API
↳ https://antondevtips.com/blog/top-15-mistakes-developers-make-when-creating-web-apis
13. Как реализовать кэширование
↳ https://antondevtips.com/blog/how-to-implement-caching-strategies-in-dotnet
14. Быстрый старт с FastEndpoints
↳ https://antondevtips.com/blog/getting-started-with-fastendpoints-for-building-web-apis-in-dotnet
15. Деплой приложений .NET в Azure через Aspire
↳ https://antondevtips.com/blog/how-to-deploy-dotnet-application-to-azure-using-neon-postgres-and-dotnet-aspire
16. 15 ошибок, которые совершают .NET-разработчики
↳ https://antondevtips.com/blog/top-15-mistakes-dotnet-developers-make-how-to-avoid-common-pitfalls
17. Лучшие практики повышения качества кода
↳ https://antondevtips.com/blog/best-practices-for-increasing-code-quality-in-dotnet-projects
18. Как создать мультиарендное приложение
↳ https://antondevtips.com/blog/how-to-implement-multitenancy-in-asp-net-core-with-ef-core
19. Архитектура на основе вертикальных срезов
↳ https://antondevtips.com/blog/vertical-slice-architecture-the-best-ways-to-structure-your-project
20. Как структурировать проект с Clean Architecture + Vertical Slices
↳ https://antondevtips.com/blog/the-best-way-to-structure-your-dotnet-projects-with-clean-architecture-and-vertical-slices
📥 Скачать дорожную карту по ASP.NET Core на 2025 год:
↳ https://antondevtips.com/roadmap/aspnetcore?utm_source=linkedin&utm_medium=social&utm_campaign=aspnetcore-roadmap-2025
🧼 Как элегантно работать с конфигами в .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 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 приносит десятки нововведений, которые меняют подходы к разработке. Пока одни программисты осваивают новый синтаксис 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-приложения.
Разработка надёжных, масштабируемых и быстрых .NET-приложений во многом зависит от того, как вы организуете конкуренцию и обработку данных.
Во время разработки .NET-приложений часто возникает необходимость передавать данные из одной части кода в другую.
Ранее для этого использовали такие конструкции, как
Queue<T>
, ConcurrentQueue<T>
или BlockingCollection<T>
.Эти очереди оборачивали в классы и применяли для управления потоками данных.
Однако у таких решений есть существенный минус — сильная связанность кода.
Channels в C# это малоизвестная, но мощная фишка, которая предлагает современный способ построения безопасных, асинхронных и высоконагруженных .NET-приложений.
Они реализуют паттерн "производитель-потребитель": один класс создаёт данные, другой их потребляет - при этом оба ничего не знают друг о друге.
Ключевым архитектурным моментом при работе с каналами является выбор между ограниченными и неограниченными каналами.
В этом гайд, где узнаете:
ASP.NET Core
-приложенииPlease open Telegram to view this post
VIEW IN TELEGRAM