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

Связь: @devmangx

РКН: https://clck.ru/3FocB6
Download Telegram
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
Простой способ улучшить методы в C#
(с переменным числом параметров)

Используй улучшения ключевого слова params из .NET 9.

Ключевое слово params в C# позволяет передавать переменное количество аргументов без необходимости перегрузки методов. Это удобно, когда количество входных параметров заранее неизвестно.

Раньше:
params работал только с массивами.

Теперь в C# 13 и .NET 9:
params можно использовать с любыми коллекциями, у которых есть метод Add, включая:

- Span<T>
- ReadOnlySpan<T>
- IEnumerable<T>

Это упрощает код и делает API гибче.

А ты уже используешь это улучшение?🤠

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
14👍13🔥3
90% C#‑проектов на старте не нуждаются в следующем:

🔸Kubernetes
🔸Микросервисах
🔸Разделении БД на чтение/запись

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

Но при этом желательно предусмотреть базовый дизайн,
чтобы в будущем система могла эволюционировать.

Несколько месяцев назад я наткнулся на следующий репозиторий на GitHub:
"Evolutionary Architecture by Example"


Ссылка на репозиторий: https://github.com/evolutionary-architecture/evolutionary-architecture-by-example

Он показывает, как постепенно развивать архитектуру .NET‑приложения.

В нём выделено 4 этапа:

🔸Начальная архитектура — фокус на простоте
🔸Выделение модулей — фокус на поддерживаемости
🔸Выделение микросервисов — фокус на масштабировании
🔸Применение тактического DDD — фокус на сложности бизнес-домена

Архитектура начинается с малого,
но со временем развивается по мере роста требований.

Запомните:
Простота масштабируется. Сложность — ломается.


👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16🔥5😁2🥴1
Использование Dapper

Я заметил, что есть отличные примеры для простых чтений, но практически нет примеров работы с более чем двумя JOIN'ами.

Это означает, что разработчику нужно хорошо разбираться как в SQL, так и в синтаксисе Dapper.

Пример:

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
👍63
This media is not supported in your browser
VIEW IN TELEGRAM
Пробовал ли ты функцию автоподсказок в встроенном терминале VS Code? Она даёт молниеносные автодополнения — например, динамические подсказки по веткам или навигации по путям.

Включается через настройку "terminal.integrated.suggest.enabled" (по умолчанию активна в версии Insiders)

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
13