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

Связь: @devmangx

РКН: https://clck.ru/3FocB6
Download Telegram
Архитектор : «В .NET слишком любят всё усложнять.»

Он же через минуту : «А вот 10 ПОТРЯСАЮЩИХ паттернов, которые мы можем взять из референсной архитектуры eShop от Microsoft! 😍»

Давайте тогда возьмём сайт на WiX и превратим его в магистерскую диссертацию по распределённым системам

А вы тоже замечали такие противоречия среди разработчиков?

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥3
200+ задач по структурам данных и алгоритмам

Массивы – https://bit.ly/3vM1JP5
Строки – https://bit.ly/3vM1JP5
Двоичное дерево – https://bit.ly/3JIsn1i
Связный список – https://bit.ly/3zFatrn
Динамическое программирование – https://bit.ly/3vLwjs5
Рекурсия – https://bit.ly/3JDhUnv

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍2🔥2
Нужно получить ID вошедшего пользователя в Web API ? 🪑

(Предполагается, что ID пользователя был добавлен как claim при генерации токена)

—> Определи интерфейс IUser
—> Реализуй его, чтобы считывать ID из claims
—> Зарегистрируй зависимости
—> Внедряй IUser и получай доступ к ID где угодно

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥2😈1
Если вы ещё не включили RespectRequiredConstructorParameters в System.Text.Json 9 — самое время это сделать

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

Если какой-то required-параметр отсутствует в JSON — JsonException тут как тут

Больше никаких тихих багов из-за значений по умолчанию

💪💪💪

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
👍104
IAsyncActionFilter — недооценён, но очень полезный фильтр

В ASP.NET Core фильтры позволяют запускать логику до и после выполнения запроса в пайплайне.

Зачем их использовать?

—> Повторно используемая логика
—> Чистые, читаемые контроллеры

Отлично подходит для:

—> Проверки прав доступа
—> Подтверждения email
—> Применения бизнес-правил

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥52😁1
Central Package Management в .NET

Статья

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
10🔥2
Трудно отлаживать запросы в EF Core?

Используй .EnableSensitiveDataLogging() — и увидишь в логах реальный SQL + значения параметров

Очень удобно для:

—> Понимания проблем с запросами
—> Копирования и запуска SQL напрямую

Не используй в проде! 👊

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14👍64😐2
OpenAI выпустила Codex CLI — опенсорс агента ИИ

Лицензия Apache 2.0. Легко запускается локально и превращает командную строку в среду программирования на естественном языке.

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
👍42🔥1🥴1
Схема последовательности действий Outbox Pattern

Этот паттерн обеспечивает надёжную доставку событий из приложения в очередь сообщений без потери данных

1. Пользователь отправляет заказ.

2. Приложение сохраняет:

—> Заказ в таблицу Orders
—> Соответствующее событие в таблицу Outbox

Всё это происходит в рамках одной транзакции — то есть либо оба действия выполняются, либо ни одно.

3. Отдельный процессор Outbox затем:

—> Извлекает необработанные события
—> Публикует их в очередь сообщений (например, Kafka, RabbitMQ)
—> Отмечает их как обработанные в БД

Как реализовать его с нуля? —> читать

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥4
Вы слышали о Coravel?

Coravel — это .NET-библиотека без необходимости конфигурации, ориентированная на разработчиков, вдохновлённая Laravel (PHP-фреймворком).

Она создана для того, чтобы сделать ваше приложение мощнее — за счёт фоновых задач и автоматизации.

Это как бустер продуктивности для .NET-бэкенда.

Возможности без базы данных, брокеров сообщений и внешних сервисов:

—> Планирование задач (как Cron)
—> Очереди фоновых задач (в памяти)
—> Классы фоновых задач (Invocables)
—> Рассылка событий (Pub/Sub внутри процесса)
—> Отправка писем
—> Простое кэширование

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

Ты уже пробовал? 🏴‍☠️

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍3
Ты используешь локальные переменные в LINQ?

Слышал про ключевое слово let?

Ключевое слово let позволяет создавать локальные переменные прямо внутри LINQ-запроса.

Это похоже на создание переменной внутри цикла. С помощью let можно выносить сложные выражения в отдельные переменные — так запрос становится модульным и легче читается.

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

На фото прикрепил простой пример использования.

Также чекни эти 4 совета по улучшению производительности в Entity Framework: тут

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🥴31🔥1
Версионирование API в .NET 9

В .NET 9 ты можешь гибко управлять версиями API — хоть в контроллерах, хоть в минималках:

URL-версионирование — /api/v1/orders, /api/v2/orders

Query string — /api/orders?api-version=1

Заголовок HTTP — X-Api-Version: 1

Тип медиа — application/vnd.myapi.v1+json

⚙️ Подключи нужные пакеты:
Asp.Versioning.Http  
Asp.Versioning.Mvc
Asp.Versioning.Mvc.ApiExplorer


Поддержка версионирования:

В контроллерах
В минимальных API

Старые версии можно объявить устаревшими.

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
11🔥1
Новинка: Incrementalist 1.0 — инструмент инкрементальной сборки для .NET, который использует git diff (через libgit2sharp) и Roslyn для анализа изменений и зависимостей в коде, чтобы значительно сократить время сборки и тестирования в больших .NET-решениях и монорепозиториях.

Хотя его использовали и раньше, но только сейчас инструмент получил полноценный интерфейс командной строки 😊

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
👍73🔥3
Ищешь альтернативу MediatR?

Рекомендую обратить внимание на Channels в .NET

С помощью Channels можно легко реализовать простую очередь сообщений в памяти

Channels реализуют паттерн producer-consumer — продюсеры асинхронно отправляют данные, а консюмеры — асинхронно их читают

У канала есть Writer и Reader, через которые ты можешь публиковать и потреблять сообщения.

Вот как можно с их помощью сделать простой message bus: вот

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥3🤔1
Как спроектировать эффективные и безопасные API?

Диаграмма выше показывает типичные подходы к проектированию API на примере корзины покупок

Обратите внимание: проектирование API — это не только определение путей URL. Чаще всего необходимо правильно выбирать имена ресурсов, идентификаторы и шаблоны путей. Также не менее важно продумать заголовки HTTP-запросов и разработать эффективные правила ограничения частоты запросов на уровне API-шлюза.

Какие из API, которые вы проектировали, были самыми интересными? 🪑

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
👍143🌚1
Как использовать Spectre.Console в ASP.NET Core для выделения важных разделов в консоли

https://spectreconsole.net

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
👍52🔥2🥴2👀1
20 ключевых концепций проектирования систем, которые должен знать каждый разработчик

1. Балансировка нагрузки
Распределяет трафик между несколькими серверами для надёжности.

2. Кэширование
Хранит часто используемые данные в памяти для более быстрого доступа.

3. Шардирование базы данных
Разделяет базы данных для обработки роста данных в крупных масштабах.

4. Репликация
Копирует данные на реплики для обеспечения доступности и отказоустойчивости.

5. Теорема CAP
Компромисс между согласованностью, доступностью и устойчивостью к разделению.

6. Консистентное хеширование
Распределяет трафик между несколькими серверами для надёжности.

7. Очереди сообщений
Развязывает сервисы с помощью архитектуры на основе событий (async event-driven).

8. Ограничение частоты запросов (Rate Limiting)
Контролирует частоту запросов для предотвращения перегрузки системы.

9. API-шлюз
Централизованная точка входа для маршрутизации API-запросов.

10. Микросервисы
Разбивает систему на независимые, слабо связанные сервисы.

11. Обнаружение сервисов (Service Discovery)
Находит сервисы динамически в распределённых системах.

12. CDN
Доставляет контент с edge-серверов для повышения скорости.

13. Индексация БД
Ускоряет запросы за счёт индексации важных полей.

14. Партиционирование
Разделяет данные по узлам для масштабируемости и производительности.

15. Согласованность со временем
Гарантирует согласованность со временем в распределённых базах данных.

16. WebSockets
Обеспечивает двустороннюю связь для обновлений в реальном времени.

17. Масштабируемость
Увеличивает мощность за счёт обновления или добавления машин.

18. Отказоустойчивость
Обеспечивает доступность системы при сбоях аппаратного/программного обеспечения.

19. Мониторинг
Отслеживает метрики и логи для оценки состояния системы.

20. Аутентификация и авторизация (AuthN & AuthZ)
Управляет доступом пользователей и проверяет их личность безопасно


👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥4👏2
Media is too big
VIEW IN TELEGRAM
Нужно развернуть .NET веб-приложение в Azure?

Вот бесплатный курс для начинающих

Он показывает самый простой способ поэтапного развёртывания ASP.NET Core веб-приложений и API в облаке Microsoft Azure

В курсе также рассматриваются:

—> Как Azure размещает ваше приложение в облаке

—> Как устранять проблемы при деплое

—> Как подключить веб-приложение к API в облаке

К концу курса у вас будет полнофункциональное .NET-приложение, работающее от начала до конца в облаке.

Полный курс можно посмотреть бесплатно здесь

👉 @KodBlog | #видео
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍3🔥1
Обновлённый инструмент GitHub Copilot для .NET скоро выйдет

Сейчас находится в закрытом предварительном просмотре —но можно подать заявку на участие в программе раннего доступа: клик

Может действовать автономно, без необходимости подтверждать каждое действие, так как будет поддерживать режим агента Copilot, который скоро появится в Visual Studio

Не могу дождаться, чтобы попробовать 👊

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
👍42🔥2🐳1
В C# 14 (в превью) появился новый ключевой элемент — field

Он позволяет писать тело аксессора свойства без явного объявления поля для хранения значения.

Компилятор сам подставит вместо field автоматически сгенерированное поле.

Что думаешь об этом нововведении? 🕵️‍♂️

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
👍41🔥17🍾51
Что такое векторный поиск?

Лучший метод поиска, о котором вы не знали

Если вы реализуете поиск, у вас есть два основных варианта:

Поиск по ключевым словам
Полнотекстовый поиск

И эти подходы хороши.

Я использовал их во многих приложениях. Но они не подходят для произвольных запросов

Например: «идеи для быстрого и полезного завтрака» — такие запросы не работают с keyword-поиском

🧭 Решение — векторный поиск!

Как это работает:

1. Мы подаём текст, изображения или другие данные в LLM (большую языковую модель)

2. Модель превращает каждую единицу данных в список чисел (вектор)

3. Эти числа отражают смысл данных

4. Похожие по смыслу вещи получают похожие векторы

После этого мы можем делать поиск по смыслу, а не по ключевым словам

Это особенно круто, если вы работаете с AI, рекомендациями или чат-ботами.

Хотите узнать больше? Вот —> статья

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥31