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

Связь: @devmangx

РКН: https://clck.ru/3FocB6
Download Telegram
Легкий pub/sub для .NET — Marille

Если нужно управлять множеством каналов и организовать pub/sub (публикации и подписки) внутри .NET-приложения — Marille отлично подойдет 😏

Простое управление темами и подтемами сообщений
Основано на System.Threading.Channels
Высокая производительность и минимальные накладные расходы
Поддержка .NET Core и .NET 6+

Использовали Marille в проектах?

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥2
FluentValidation делает валидацию ввода проще простого.

Знаете ли вы, что валидаторы поддерживают внедрение зависимостей (DI)?

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

Посмотрите фрагмент кода на фото в качестве примера.

Милан использует FluentValidation вместе с MediatR для реализации универсального конвейера валидации (middleware).

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

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
👍631
Может кто помнит есть такая игра — Linux Survival называется.

В общем, если нужно быстро освоить базовые команды Linux — вот это как раз то, что надо.

Заходишь на сайт, выбираешь уровень, выполняешь задания прямо в браузере — и БАЦ, ты уже знаешь, как перемещаться по файловой системе, создавать файлы и папки, и даже работать с правами доступа. 🖥

Без регистрации и бесплатно.

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥2🍓21
Андерс Хейлсберг, ведущий архитектор TypeScript объясняет, почему Microsoft перевела компилятор TypeScript с JavaScript на Go, а не на C#.

Основные причины выбора Go:

Простая совместимость с текущей кодовой базой.

Эффективное управление памятью и обработка графов.

Упрощение портации без необходимости кардинального переписывания.

При этом он подчеркивает, что C# остается ключевым языком Microsoft, особенно для .NET и облачных решений. Решение о переходе на Go продиктовано исключительно техническими причинами, а не отказом от C#.

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16😈8🔥3
This media is not supported in your browser
VIEW IN TELEGRAM
Cline + GitHub: мгновенный разбор кода

Хотите быстро разобраться, как работает библиотека с GitHub? Лови лайфхак 😎

Просто вставляешь ссылку на репозиторий в Cline – и он объясняет, как использовать код!

Запоминаем и пользуемся!

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
👍74🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
Реддитор подогнал годный тул для разрабов на Unity.

Unity Source Bot
— это поиск по 1000+ репозиториям с проектами на движке. Идеально, когда дока снова больше запутала, чем помогла.

Можно быстро глянуть, как другие уже заюзали нужную фичу 👍

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8👍411
This media is not supported in your browser
VIEW IN TELEGRAM
💡 СОВЕТ для ваших GitHub README

Выделяйте важную информацию для ваших пользователей с помощью этих специальных блоков Markdown:

[!NOTE] - используется для заметок (дополнительной информации, полезной для пользователя).

[!TIP] - обозначает совет или полезное предложение.

[!IMPORTANT] - подчеркивает важную информацию.

[!WARNING] - указывает на что-то, требующее внимания пользователя.

[!CAUTION] - осторожность (аналогично предупреждению, но с более серьезным тоном).

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
👍23🔥7
🔍 Нашёл топовую библиотеку для логирования!

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

Поддержка множества синков (куда писать логи)
Гибкая настройка уровней логирования
Поддержка разметки шаблонов

Лучше сразу внедрять в проект 😂

👉 @KodBlog | #ресурсы
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣17👍95🔥1
Различия между HTTP/1, HTTP/2 и HTTP/3

HTTP является основой веб-коммуникации с 1989 года, но за это время он значительно эволюционировал. Вот разбор того, как каждая версия развивалась, чтобы удовлетворять растущие потребности:

1. HTTP/1.1 (1997)

Оригинальный протокол, определивший взаимодействие в вебе, использует простые методы, такие как GET и POST. Однако с развитием веба, появлением сложных приложений, потокового HD-видео и других нагрузок HTTP/1.1 столкнулся с рядом ограничений:

Проблема head-of-line (HOL) blocking, замедляющая загрузку ресурсов.

Избыточные HTTP-заголовки.

Необходимость устанавливать несколько TCP-соединений для параллельной загрузки ресурсов.

2. HTTP/2 (2015)

Значительный шаг вперед, включающий:

Сжатие заголовков для экономии трафика.

Мультиплексирование – возможность одновременной передачи нескольких запросов в одном TCP-соединении.

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

Бинарное кодирование вместо текстового, что ускоряет обработку.

HTTP/2 позволил сократить число TCP-соединений, ускоряя загрузку страниц и оптимизируя использование ресурсов сети. Однако он все еще страдал от TCP head-of-line blocking и проблем безопасности, таких как Stream Reuse Attack.

3. HTTP/3 (2020)

Основан на протоколе QUIC и использует UDP вместо TCP, что дает:

Полное устранение head-of-line blocking TCP.

Улучшенную миграцию соединений (например, при смене Wi-Fi на мобильную сеть).

Встроенное шифрование (TLS 1.3 по умолчанию).

Быстрое установление соединений за счет отказа от трехэтапного рукопожатия TCP.

HTTP/3 не полностью заменяет HTTP/2 – он предназначен для определенных сценариев, где его преимущества наиболее заметны, тогда как HTTP/2 остается надежным вариантом.

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
👍121🔥1🥰1
💡 ASP.NET Core 9 позволяет отключать HTTP-метрики и не записывать значения для определённых конечных точек и запросов.

Например, автоматизированные системы проверяют конечную точку Health, поэтому сбор метрик для неё не особенно полезен.

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10👍311
Как реализовать поток On-Behalf-Of (OBO) в ASP.NET Core с использованием Microsoft Entra ID для делегированной аутентификации.

Читать: клик

👉 @KodBlog | #cтатья
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍2🔥2
EF Core — это потрясающе, но давайте будем честными. Перебор записей в цикле для их обновления — не очень.

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

Есть способ получше — массовые обновления. 😎

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
23🤨7👍6🤯1
Нашел для вас отличный репозиторий — Unity Clean Code

Это сборка лучших практик написания чистого кода в Unity, которые помогут сделать ваш проект структурированным и удобочитаемым.

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

💬 Отличный выбор для всех, кто работает с Unity

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11👍51💯1
💡 В .NET 8 появился новый интерфейс IExceptionHandler, который упрощает глобальную обработку исключений в aspnetcore.

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

Достаточно реализовать метод TryHandleAsync, подключить его через UseExceptionHandler — и всё готово.

Это чисто. Модульно. Поддерживаемо. И, честно говоря, давно пора.

Подробно читай в статье: тык

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🔥4🌭2
Copilot, дружище, твои знания по C# отстают на год, а может и два 😄

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
😁39👍4🌭3
Как создать HttpClient в .NET?

Рекомендуемый способ — использование IHttpClientFactory

Вы можете использовать IHttpClientFactory напрямую.

Недостаток в том, что вам придется настраивать HttpClient каждый раз.

Если вам нужен заранее настроенный HttpClient, вы можете использовать именованные или типизированные клиенты.

Вот правильный способ работы с HttpClient в .NET: тык

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥4💯32
Есть такой инструмент — SharpRedirect

С ним можно легко перехватывать и перенаправлять сетевой трафик

Он принимает входящие TCP-подключения на локальный порт и пересылает их на указанный удалённый хост и порт.

😍 Поддерживает двустороннюю передачу данных в полном дуплексе, обеспечивая стабильную и асинхронную работу для повышения производительности.

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5👍41
А что скажут разработчики F#?

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣36😁2👨‍💻2
3 различных архитектурных подхода к организации компонентов в приложении

1. Классическая трёхслойная архитектура

Включает три уровня:

🟡MyApp.Web (контроллеры, взаимодействие с пользователем)

🟡MyApp.Business (бизнес-логика)

🟡MyApp.Data (доступ к данным)

PoliciesController использует IPolicyService, который, в свою очередь, использует IPolicyRepository для работы с базой данных.

Классическая, но может приводить к сильной связанности.

2. CQRS-подход

🟡Использует паттерн Command Query Responsibility Segregation (CQRS)

🟡PoliciesController вызывает RenewPolicyCommand, который обрабатывается RenewPolicyHandler

🟡RenewPolicyHandler взаимодействует с IPolicyRepository, который работает с PolicyRepository

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

3. Компонентный подход

🟡Компоненты объединены в единый модуль MyApp.Policies.

🟡PoliciesController использует IPolicyComponent, который включает в себя PolicyComponent, PolicyService и PolicyRepository

Даёт больше гибкости, но требует продуманной структуры

Как вы упаковываете свои компоненты? 🤔

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥2🌚2
Это правильный способ реализации посева данных в ваших .NET-приложениях

EF Core 9 значительно упростил этот процесс.

Больше не нужно переопределять OnModelCreating или вручную управлять скриптами заполнения данных.

EF 9 представил методы UseSeeding и UseAsyncSeeding, которые предоставляют удобный способ заполнения базы данных начальными данными.

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14👍6🌚1💯1
Media is too big
VIEW IN TELEGRAM
Claude 3.7 Sonnet получил серьёзного конкурента

Gemini 2.5 Pro — действительно хорошая модель для кода 👍

качество кода действительно высокое
контекст 1M токенов
нативная мультимодальность
генерация длинного кода
понимание крупных кодовых баз

Чувак на видео использовал его вместе с Windsurf для создания приложения поискового агента с ИИ

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥76👍2🥴2