kodblog | Unsorted

Telegram-канал kodblog - C# Portal | Программирование

13726

Присоединяйтесь к нашему каналу и погрузитесь в мир для C#-разработчика Связь: @devmangx РКН: https://clck.ru/3FocB6

Subscribe to a channel

C# Portal | Программирование

Многие неправильно понимают Clean Architecture

Я вижу одну и ту же ошибку снова и снова

Разработчики узнают про Clean Architecture, вдохновляются её идеями —
и сразу начинают лепить структуру проекта по знаменитой диаграмме

Но фишка вот в чём > Clean Architecture — это не про папки. Это про зависимости.

Саймон Браун даже написал «пропущенную главу» к книге дяди Боба, где как раз поднимает эту тему.

Но по какой-то причине главный смысл все равно теряется

✅ Можно использовать Clean Architecture и без слоёв
✅ Главное — правильно направлять зависимости

Вот два способа, как реально лучше структурировать приложение на Clean Architecture: читать

👉 @KodBlog

Читать полностью…

C# Portal | Программирование

Хочешь разрабатывать приложения в Azure? Запомни эти 3 типа облаков

> IAAS – Ты управляешь приложениями и данными, провайдер отвечает за «железо» и сеть.
> PAAS – Провайдер берёт на себя инфраструктуру и ОС, ты просто пишешь код.
> SAAS – Готовые приложения; минимум гибкости, максимум удобства

👉 @KodBlog

Читать полностью…

C# Portal | Программирование

Хочешь стать крутым разработчиком?

Разберись с конечными автоматами.

Вот определение для тех, кто любит точность:

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


А если по-простому:

> Есть текущее состояние

> Происходит какое-то событие или действие

> Переход в новое состояние

Мы задаём все возможные состояния, переходы между ними и что эти переходы запускает

А дальше можно реализовать это как Saga — способ управления бизнес-логикой, которая тянется во времени

MassTransit
предлагает одну из самых удобных реализаций

⏩Вот как можно начать: read

👉 @KodBlog

Читать полностью…

C# Portal | Программирование

Что нового в C# 14

⏩Статья

👉 @KodBlog

Читать полностью…

C# Portal | Программирование

Как передать Tenant ID в мультиарендных (multitenant) приложениях?

У вас есть как минимум 3 варианта:

⏩Заголовок запроса (Request header)
⏩Cookie
⏩JWT

В приведённом на фото примере кода Tenant ID извлекается из заголовка HTTP-запроса

Также есть и другие способы получить Tenant ID: передача через строку запроса (query string) или извлечение из claim в удостоверении пользователя

Использование claim-ов, скорее всего, будет самым безопасным способом

Вы даже можете получать Tenant ID из базы данных (но это повлияет на производительность)

После этого можно использовать EF Core для реализации фильтрации по Tenant.

—> Вот как это делается: читать

👉 @KodBlog

Читать полностью…

C# Portal | Программирование

Идеальный приём для повышения продуктивности с EF Core:

Используй EF Core Power Tools

EF Core Power Tools — это расширение для Visual Studio, которое помогает в проектировании базы данных

Возможности:

— визуализируй свой DbContext в один клик
— генерируй SQL-скрипты создания таблиц на основе своих C# классов
— получай C# классы из баз данных Azure SQL, SQL Server, Postgres и MySQL
— просматривай статус миграций, добавляй новые и синхронизируй базу данных с моделью

EF Core Power Tools полезен при создании нового проекта с нуля

Но и при подключении к существующему проекту —
↳ чтобы быстро разобраться в структуре базы данных и связях.

Лайк если уже пробовал EF Core Power Tools 👍

P.S. На изображении выше показано, как выглядит сгенерированная диаграмма

👉 @KodBlog

Читать полностью…

C# Portal | Программирование

™️ Microsoft Azure о предстоящем изменении расчёта стоимости хранения данных для Azure SQL Database:

Ранее Microsoft обнаружила ошибку в расчётах: в месяцы с менее чем 31 днем (например, февраль, апрель) пользователи платили меньше, чем должны были.

> С 1 июня 2025 года начнут правильно рассчитывать оплату для месяцев с менее чем 31 днём

> Это может привести к незначительному увеличению вашего счёта за хранение данных

> Важно: Вам не будут доначислять недоплаченные суммы за прошлые периоды до 1 июня 2025

> Действий от вас не требуется, но рекомендуется следить за счётами, чтобы убедиться в правильности начислений

👉 @KodBlog

Читать полностью…

C# Portal | Программирование

Паттерн проектирования №5: "Null Object"

⏩Статья

👉 @KodBlog

Читать полностью…

C# Portal | Программирование

Только что добавил обогащение пользовательского контекста в трассировку запросов в ASP .NET Core

Теперь отслеживать путь пользователя и разбирать баги стало гораздо проще.

5 выводов из моей реализации:

1. Вытаскивайте userId из клеймов через middleware

2. Прокидывайте контекст пользователя в теги Activity и в logging scopes

3. Ставьте middleware после аутентификации в пайплайне

4. Дополняйте контекст фичами (feature flags) и информацией о тенанте

5. Следите за утечкой персональных данных (PII) в логах

Хотите улучшить observability своих .NET-приложений?

⏩Полный разбор — тут

👉 @KodBlog

Читать полностью…

C# Portal | Программирование

«Why C#?» — свежий выпуск от доктора Милана Милановича, Microsoft MVP и эксперта в области программной инженерии

⏩Статья

👉 @KodBlog

Читать полностью…

C# Portal | Программирование

Новое в C# 14 — extension-блоки

Раньше метод расширения выглядел так:

public static IEnumerable<int> WhereGreaterThan(this IEnumerable<int> source, int threshold)


Теперь можно компактно группировать всё, что "расширяет" тип, в одном extension-блоке. Это удобно и визуально чище:

extension(IEnumerable<int> source)
{
public IEnumerable<int> WhereGreaterThan(int threshold)
=> source.Where(x => x > threshold);

public bool IsEmpty => !source.Any();
}


Да, теперь даже IsEmpty можно написать как будто он был в IEnumerable

Использование не поменялось

C# снова сделал шаг вперед 👍

👉 @KodBlog

Читать полностью…

C# Portal | Программирование

В C# 14 (в превью) появился новый ключевой элемент — field

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

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

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

👉 @KodBlog

Читать полностью…

C# Portal | Программирование

Нужно развернуть .NET веб-приложение в Azure?

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

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

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

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

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

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

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

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

👉 @KodBlog | #видео

Читать полностью…

C# Portal | Программирование

Как использовать Spectre.Console в ASP.NET Core для выделения важных разделов в консоли

⏩https://spectreconsole.net

👉 @KodBlog

Читать полностью…

C# Portal | Программирование

Как спроектировать эффективные и безопасные API?

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

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

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

👉 @KodBlog

Читать полностью…

C# Portal | Программирование

Один простой хак для продуктивности умных C#-разработчиков

Создавай сразу несколько классов в Visual Studio

Как это сделать?

В окне «Добавить новый элемент» просто введи несколько названий классов, разделяя их запятыми

P.S. Смотри видео выше, как это работает

👉 @KodBlog

Читать полностью…

C# Portal | Программирование

BotSharp — мощный .NET-фреймворк для создания AI-агентов

Хочешь собрать собственного умного ассистента или интегрировать LLM в свой бизнес? Обрати внимание на BotSharp — это open-source фреймворк от SciSharp на .NET Core для создания AI-агентов и чат-ботов

👍 — как раз в тему
🔥 — лайк

👉 @KodBlog

Читать полностью…

C# Portal | Программирование

Простой, хоть и не самый распространённый способ упростить условия if

—> используйте сопоставление с образцом по свойствам

Сопоставление с образцом по свойствам в C# — это мощный инструмент, который помогает упростить код и сделать его более понятным

👍 — база
🔥 — всё верно

👉 @KodBlog

Читать полностью…

C# Portal | Программирование

Switch-выражения. Вы либо любите их, либо ненавидите

Но одно можно сказать точно:

Они используются в каждом проекте

И никуда не исчезнут.

Один простой способ упростить конструкцию switch — использовать switch-выражение.

Это способ сразу присвоить результат switch-конструкции переменной.

Смотрите пример на видео выше

А что предпочитаете вы: switch-оператор или switch-выражение? ☕️

👉 @KodBlog

Читать полностью…

C# Portal | Программирование

Как человек, который годами рефакторил запутанные кодовые базы, скажу:

Начни использовать Guard Clauses (защитные условия).

→ Защитные условия сразу защищают твой код от некорректных состояний.
→ Они убирают глубокую вложенность, скрывающую бизнес-логику
→ Делают методы читаемыми и линейными — сверху вниз

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

👍 — база
🔥 — спасибо

👉 @KodBlog

Читать полностью…

C# Portal | Программирование

Если вы работаете с .NET и ищете современную библиотеку для работы с изображениями, обратите внимание на ImageSharp

ImageSharp — это полностью управляемая, кроссплатформенная библиотека для 2D-графики. Она позволяет:

> Загружать и сохранять изображения в форматах JPEG, PNG, GIF, BMP, TIFF, WebP и других

> Масштабировать, обрезать, вращать изображения, применять фильтры и спецэффекты

> Читать и изменять метаданные (EXIF, IPTC, XMP)

> Работать с разными цветовыми пространствами (RGB, CMYK, Grayscale и т.д.)

> Эффективно обрабатывать большие изображения благодаря оптимизации работы с памятью

Установить можно через NuGet:

dotnet add package SixLabors.ImageSharp


👉 @KodBlog

Читать полностью…

C# Portal | Программирование

Топ-10 архитектурных паттернов

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

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

Существует множество архитектурных паттернов, но основные из них:

1. Многоуровневая архитектура (Layered Architecture)
> Приложение делится на логические уровни, каждый из которых отвечает за свою часть работы и взаимодействует с соседними уровнями.

2. Архитектура микросервисов (Microservices Architecture)
> Приложение разбивается на небольшие независимые сервисы, которые взаимодействуют через чётко определённые API.

3. Событийно-ориентированная архитектура (Event-Driven Architecture)
> Компоненты или сервисы обмениваются событиями, которые инициируют действия или реакции в системе.

4.Архитектура, основанная на пространствах (Space-Based Architecture, SBA)
> Структура системы строится вокруг "пространств" — независимых и автономных единиц.

5. Архитектура микрокерна (Microkernel Architecture)
> Ядро системы минималистичное, а дополнительные функции реализуются отдельными модулями вне ядра.

6. Пиринговая архитектура (Peer-to-Peer Architectural Pattern)
> Децентрализованная модель, в которой узлы сети могут быть одновременно и клиентами, и серверами.

7. Облачная нативная архитектура (Cloud-Native Software Architecture)
> Приложения разрабатываются и разворачиваются с учётом особенностей облачных платформ для масштабируемости, надёжности и гибкости.

8. CQRS (Command Query Responsibility Segregation)
> Разделение моделей для команд (изменений данных) и запросов (чтения данных) для упрощения масштабирования и оптимизации.

9. Шестиугольная архитектура (Hexagonal Architecture)
> Деление приложения на внутренний слой (бизнес-логика) и внешний слой (взаимодействие с внешним миром).

10. Чистая архитектура (Clean Architecture)
> Принцип строгого разделения ответственностей и слабой связанности компонентов для облегчения поддержки и развития приложения


👉 @KodBlog

Читать полностью…

C# Portal | Программирование

Хочешь освоить C# с нуля и получить сертификат от Microsoft? ™️

freeCodeCamp запустили бесплатный курс Foundational C# with Microsoft

— 35 часов практики
— Основы C#, переменные, циклы, массивы
— Учеба через Microsoft Learn
— Официальный сертификат после финального экзамена

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

🔗 Стартовать можно здесь: курс на freeCodeCamp

👉 @KodBlog

Читать полностью…

C# Portal | Программирование

Пример Central Package Management (CPM)

Когда мы указываем версии NuGet-пакетов в одном центральном файле (Directory.Packages.props), все проекты в решении автоматически используют эти версии. Это упрощает поддержку и предотвращает расхождение версий между проектами.

А вы уже используете CPM в своих решениях? ☺️

👉 @KodBlog

Читать полностью…

C# Portal | Программирование

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

🕵️‍♂️

👉 @KodBlog

Читать полностью…

C# Portal | Программирование

Что такое векторный поиск?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

👉 @KodBlog

Читать полностью…

C# Portal | Программирование

Обновлённый инструмент GitHub Copilot для .NET скоро выйдет

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

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

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

👉 @KodBlog

Читать полностью…

C# Portal | Программирование

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

Читать полностью…

C# Portal | Программирование

👩‍💻 Программирование — В С Ё

В 2025 году на кодинге уже не вывезешь, перспектива года - Информационная Безопасность.

Ловите полезные каналы, которые помогут ворваться в новое направление.

👍 ZeroDay — Уроки, эксплуатация уязвимостей с нуля
👍 Белый Хакер — Свежие новости из мира ИБ
😎 Арсенал Безопасника — Все необходимые инструменты
😎 Бункер Хакера — Статьи, книги, шпаргалки и хакинг
👨‍💻 Серверная Админа — Настройка и уроки по компьютерным сетям

📂Вступай и изучай новое направление!

Читать полностью…

C# Portal | Программирование

Ищешь альтернативу MediatR?

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

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

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

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

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

👉 @KodBlog

Читать полностью…
Subscribe to a channel