C# Portal | Программирование – Telegram
C# Portal | Программирование
14.9K subscribers
966 photos
118 videos
24 files
809 links
Присоединяйтесь к нашему каналу и погрузитесь в мир для C#-разработчика

Связь: @devmangx

РКН: https://clck.ru/3FocB6
Download Telegram
Базовая настройка fanout-обмена с клиентом RabbitMQ для .NET

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
👍95
Эта фича показала мне, насколько PostgreSQL крут.

Думаю, тебе тоже понравится.

В одном проекте мне нужно было за одну операцию вставить 5 тысяч записей.

Хранилищем был Postgres, и, естественно, всё должно было работать быстро.

После небольшого ресёрча я наткнулся на команду COPY.

Эта команда позволяет выполнять массовую вставку данных напрямую в базу.

Метод BINARY COPY отправляет данные в бинарном формате, который Npgsql декодирует, и после вызова Complete() данные сохраняются в БД.

Так как при этом сохраняются типы данных без конвертации, лучше использовать NpgsqlDbType — он позволяет явно указать нужный тип без неоднозначностей.

Что скажешь? 🙂

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
👍154🤔4
Лучшая фича в ASP.NET Core 10 на сегодняшний день

Server-Sent Events (SSE)
Простая альтернатива SignalR 👇

Если тебе нужно реализовать обновления в реальном времени в .NET-приложении — с сервера на клиент, есть несколько подходов:

• Polling — фронтенд регулярно запрашивает сервер на наличие новых данных
• SignalR — клиент подписывается на событие, сервер пушит его через WebSockets
• Server-Sent Events (уже доступны в превью .NET 10)

Постоянный опрос каждые несколько секунд может перегружать сервер и тратить трафик впустую, а WebSockets через SignalR — это избыточно для простых однонаправленных обновлений.

Server-Sent Events (SSE) — это легковесный и стабильный способ стримить данные от сервера к клиенту в одну сторону, без всей сложности двусторонних протоколов.

В этой статье покажут, как сделать "Live Stock Market" — обновления котировок в реальном времени на сервере и клиенте.

➡️Как работает SSE и зачем это нужно
➡️Реализация SSE-эндпойнта с помощью Minimal API
➡️Тестирование SSE-стрима через HTTP-запрос (HTTP Request file) в IDE
➡️Создание простого фронтенда для проверки SSE
➡️Ключевые отличия между SSE и SignalR (WebSockets)

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
19🔥12👍7
Я работаю с перечислениями каждый день.

И вот 4 лучших практики, которыми я пользуюсь, чтобы код в проекте оставался чистым:

🔸Явно указывать тип хранения

🔸Использовать атрибуты Denoscription для отображаемых имён

🔸Хелпер-метод для получения значения из атрибута Denoscription

🔸Безопасный парсинг через TryParse

А что бы ты добавил к этому списку?

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
20👍5🤨1
Entity Framework 10 будет поддерживать именованные фильтры запросов

Да, это означает, что несколько фильтров теперь можно применять одновременно, начиная с EF 10+ — при условии, что они именованные. 👍

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍125🤯2
This media is not supported in your browser
VIEW IN TELEGRAM
Необходимый репозиторий с сотнями бесплатных API для практики программирования и создания проектов.

Обновляется еженедельно и разделён по темам 🔫

http://github.com/public-apis-dev/public-apis

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
👍165
Правильный способ построения асинхронных API в .NET

Большинство API работают по простому шаблону:

🔸Клиент отправляет запрос
🔸Сервер выполняет работу
🔸Сервер возвращает ответ

Такой подход отлично работает для быстрых операций — например, получения данных или простых обновлений.

А что насчёт длительных операций?

Речь о задачах вроде:

> обработки больших файлов
> генерации отчётов
> конвертации видео

Такие процессы могут занимать от нескольких минут до часов.

Вот как можно правильно строить асинхронные API: читать

Как сообщить клиенту, что его запрос обработан?

Есть два подхода:

🔸PULL — клиент опрашивает API, чтобы узнать статус

🔸PUSH — сервер сам уведомляет клиента (через WebSocket, email и т.д.)

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
12👍2
𝟭𝟬 шагов для оптимизации запросов в EF Core

Даже сеньоры знают не все из них

Допустим, у тебя в проде тормозит EF Core-запрос.

Как бы ты исследовал и починил проблему?

Вот пошаговый подход: ( смотри иллюстрации )

А вот как начать работу с OpenTelemetry:
ссылка

Как Антон оптимизировал реальный запрос EF Core Query с 30 секунд до 30 миллисекунд:
ссылка

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
11👍3
Я ждал эту фичу 4 года и вот наконец она появляется в EF Core 10

EF Core 10 приносит серьёзное улучшение в метод
ExecuteUpdateAsync

Раньше
, чтобы сделать динамическое обновление, нужно было вручную собирать сложные и склонные к ошибкам expression tree'и.

Например: ты хочешь обновить поле Views у блога и, при определённом условии, ещё и Name.
Раньше это значило писать довольно громоздкую логику вручную через expression API.

Теперь — всё стало намного проще:
↳ можно просто использовать обычную лямбду, внутри которой разрешены if и другие управляющие конструкции.

это улучшение делает код гораздо читаемее, поддерживаемее и снижает риск багов, связанных с ручной генерацией выражений.

Ждёшь эту фичу так же, как и я?
Дай знать, что думаешь 👍

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥252
Если ты используешь GUID'ы в C# коде, тебе наверняка понравится нововведение в .NET 9: GUID версии 7.

GUID — глобально уникальный идентификатор) гарантирует уникальность значений между разными источниками.

В предыдущих версиях C# новые записи вставлялись в случайные позиции, что приводило к фрагментации индексов.

В .NET 9 появилась поддержка GUID версии 7, которые создаются последовательно.

Благодаря этому GUID теперь лучше подходят для использования в реляционных базах данных.

Кроме того, при генерации нового GUID теперь можно передать DateTimeOffset, чтобы задать собственное значение временной метки.

Ты уже начал использовать GUID версии 7? 😏

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
👍208
Чувствуешь, что отстаёшь в .NET?

Вот 10 лучших статей, которые помогут быстро наверстать:

🔸Дорожная карта .NET-разработки на 2025 год (минималистичная версия)
https://devsecrets.net/post/net-development-roadmap-minimalist-edition/

🔸10 фатальных ошибок .NET-разработчиков
https://devsecrets.net/post/10-fatal-mistakes-net-developers-make/

🔸MediatR? Не в моём .NET-стеке
https://devsecrets.net/post/mediatr-not-in-my-net-stack/

🔸Ноль опыта с Azure? Начни отсюда
https://devsecrets.net/post/zero-azure-cloud-experience/

🔸Модульный монолит — архитектурный паттерн, о котором все забывают
https://devsecrets.net/post/modular-monolith/

🔸 Как справляться с неопределённостью при проектировании систем
https://devsecrets.net/post/how-to-beat-uncertainty-when-designing-systems/

🔸 7 мощных методов LINQ, о которых ты пожалеешь, что не знал раньше
https://devsecrets.net/post/7-powerful-linq-methods/

🔸Исключения убивают приложения. Как с этим бороться
https://devsecrets.net/post/throwing-exceptions-kills-apps/

🔸Как я выкатываю недоделанный код в прод (и почему тебе тоже стоит)
https://devsecrets.net/post/how-i-push-unfinished-work-to-production/

🔸4 проверенных способа, как тесты выявляют ужасный код
https://devsecrets.net/post/4-proven-ways-how-tests-reveal-awful-code/


👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
😐7👍42