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

Связь: @devmangx

РКН: https://clck.ru/3FocB6
Download Telegram
В .NET 10 завозят Shuffle() для LINQ

Наконец-то можно будет перемешивать IEnumerable<T> без OrderBy(_ => Guid.NewGuid()) и кастомных костылей.

Зачем это нужно?

— случайный выбор без повторений
— data seeding
— игры, ML, генераторы тестов и т.п.

Микро-удобство, но то, что надо 💯

> Ссылка на обсуждение:
https://github.com/dotnet/runtime/issues/111221

❤️ — ждем

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
👍29🔥52
Используй Span<T> для высокопроизводительного среза массивов без выделения памяти.

Избегай ToList(), если он не нужен

Почему?

> Ноль аллокаций
> Молниеносный доступ к памяти
> Идеально для кода с жёсткими требованиями к производительности

🤍

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
👍263
Одна из крутых фич в Microsoft Visual Studio — External Tools

Они позволяют разработчику подключать свои утилиты > например, обновлять версию .NET Framework или автоматически добавлять NuGet-пакеты в .csproj

Мне надоело вручную подключать Serilog в новые проекты на ASP.NET Core, когда не используется кастомный шаблон. Вместо того чтобы писать скрипт самому — я просто попросил AI сгенерировать код.

А для быстрой настройки Serilog в Program.cs — использую шаблон ReSharper.

> Проект: chekme 👊

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥1
Dapper + SQL Server + вычисляемые столбцы

Хочешь, чтобы возраст считался сам? В этом примере —> таблица с датами рождения, где возраст считается прямо в SQL через computed column, а данные читаются через Dapper

> Без лишней логики в C#
> Лёгкая ORM
> Всё работает как обычное свойство

Репозиторий с примером: https://github.com/karenpayneoregon/sql-basics/tree/master/DapperBirthdaysComputedColumns ❤️

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍5
Следующая крупная версия Visual Studio выйдет позже в этом году.

Как думаете, как Microsoft её назовёт? И как должна бы назвать? 😎

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21🥴5🔥1
Месяц назад один .NET-разработчик спросил меня:

«Какие Azure-сертификации ты порекомендуешь, чтобы продвинуться в .NET-карьере?»

Я ответил уклончиво: «Это зависит от ситуации»

Но поскольку это ужасный ответ, давай поясню.

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

Исходя из этого, можно выбрать:

> Направление безопасности
> Направление разработки
> Направление инфраструктуры
> Направление данных и аналитики

Но важно помнить вот что:

Сертификаты бесполезны без опыта.

Если ты списываешь на экзаменах, рано или поздно это всплывёт

Поэтому:

1. Опыт > Сертификатов

2. Опыт + Сертификаты = сильное сочетание

3. Как правильно подходить к сертификациям? Сначала набери опыт, потом получай сертификаты

❤️ну это база

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
8😁2
Эффективная асинхронная передача данных

Когда работаешь с большими наборами данных — записями из базы, строками файлов и т.д. — не всегда хочется грузить всё в память сразу. Здесь отлично заходит IAsyncEnumerable<T>

> IAsyncEnumerable<T> — позволяет стримить данные асинхронно, без блокировки потоков
> Используй yield return, чтобы возвращать элементы по одному
> Данные подтягиваются лениво — обрабатываешь только то, что реально нужно

С await foreach всё читается и обрабатывается по мере поступления, не блокируя выполнение

Преимущества:

1. экономия, даже на больших объёмах.
2. ничего не блокируется, UI не фризит
3. чисто и понятно, без колбэков и костылей 💖

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
💯16👍7🔥31
This media is not supported in your browser
VIEW IN TELEGRAM
Режим GitHub Copilot Agent теперь доступен в preview для Visual Studio 17.14!

> Подробнее: msft.it/6012SZusi 🤍

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
👍62🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
7 архитектур, которые стоит знать каждому разработчику

> Монолит
Всё в одном проекте. Легко развернуть и начать разработку, но с ростом системы поддержка становится сложной. Подходит для небольших или быстрых MVP.

> MVC
Классика веб-фреймворков. Модель, представление и контроллер. Работает отлично, если роли чётко разделены (спойлер: многие контроллеры в итоге становятся объектами-богами)

> Master-Slave (сейчас чаще говорят Leader-Follower)
Популярен в БД: один командует — остальные копируют. Увеличивает отказоустойчивость, но если синхронизация сломается — беда.

> Многослойная архитектура
Знаменитый “lasagna code”: слой представления, логики, доступа к данным, база. Хорошо структурирует, но если перегнуть — становится медленно и громоздко

> Микросервисы
Каждая функция живёт отдельно. Масштабируются отлично, но усложняется тестирование, логирование и деплой. Подход не для всех проектов.

> SOA (сервис-ориентированная архитектура)
Более формальный родственник микросервисов. Часто встречается в больших компаниях и старых системах. ESB (Enterprise Service Bus) сначала кажется полезным. пока не становится главным узким местом.

> Событийно-ориентированная архитектура
Идеальна для приложений в реальном времени. Всё основано на событиях. Очень мощная, но если что-то пойдёт не так.. найти баг — непросто


👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥105
16 ресурсов, которые я планирую использовать, чтобы стать в 10 раз лучше в архитектуре программного обеспечения в этом году

Изучи эти репозитории:

1. Эволюционная архитектура на примерах — GitHub
2. Модульный монолит с DDD — GitHub
3. Стартер-кит на .NET 9 с мультиарендой — GitHub
4. Микросервисное eCommerce-приложение на .NET — GitHub
5. Архитектура через вертикальные срезы (Vertical Slice) — GitHub
6. Шаблон чистой архитектуры для .NET — GitHub
7. Пример гексагональной архитектуры — GitHub

Почитай эти книги:

8. Software Architecture for Developers
9. Head First Software Architecture
10. Fundamentals of Software Architecture: An Engineering Approach
11. Software Architecture: The Hard Parts
12. System Design Interview – Insider's Guide
13. System Design Interview – Volume 2
14. Designing Data-Intensive Applications

Прокачайся на практике:


15. Архитектурные каты от Нила Форда — nealford.com/katas
16. Каталог архитектурных кат — GitHub

Закинь в закладки — пригодится 🆗

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
👍72😁1
Добавили метод UseKestrel() в WebApplicationFactory

Это появится в ASP.NET 10 Preview 4 и даст простой способ включить использование сервера Kestrel в WebApplicationFactory ❤️

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
👍64
Архитектура Web API

Статья

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥1
Метод-расширение для TagWith в Entity Framework

TagWith() очень полезен для добавления отладочной информации в логи запросов, но, конечно, мы также можем обернуть его и добавить дополнительную информацию через простой extension method, как в примере выше ❤️

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
👍53
ORM — не проблема. Проблема — как разработчики ими пользуются

Как часто ты видишь, что во всём винят ORM?

Если ты не понимаешь SQL (или любую другую базу данных) — это уже твоя ответственность

Но если ты разбираешься в базовых принципах работы с БД, ты сможешь выжать из ORM максимум

Вот простой пример с EF Core:

— обновление списка уведомлений по одному
— обновление всех уведомлений одной операцией

Что будет быстрее?

Конечно тот вариант, где меньше обращений к базе.

Именно тут блестяще работает EF Bulk Update — ты можешь писать оптимальные UPDATE и DELETE запросы.

Вместо множества SQL-запросов — один.

Но даже у такого подхода есть подводные камни, о которых стоит знать:

> читать

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
👍142🔥2
Что такое Queue<T>?

Queue<T> — это коллекция в C# с принципом FIFO (первым пришёл — первым ушёл).

То есть первый добавленный элемент будет извлечён первым.

Когда использовать?

> Планирование задач
> Очереди на печать
> Обработка сообщений
> Поиск в ширину (BFS) в графах

Пример прикрепил, с вас лайк ❤️

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20🔥5😁31
.NET 10 Preview 4 — больше производительности и удобства

Вышла четвёртая превью-версия .NET 10

В ней — новые возможности языка, улучшения рантайма и прокачанная AOT-компиляция.

Также улучшили поддержку cloud-native сценариев и диагностику — определённо стоит попробовать 😡

> Подробнее: https://devblogs.microsoft.com/dotnet/dotnet-10-preview-4/

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍3
Если ты до сих пор считаешь, что EF Core медленный в 2025 году — ты застрял в прошлом

Одна из его новых фич — поддержка bulk-удалений

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

Представим, что e-commerce платформа хочет удалить все корзины, которые не обновлялись больше года.

С ExecuteDelete это делается эффективно: выполняется один SQL-запрос DELETE, который сразу удаляет все старые корзины.

Но помни: bulk-операции обходят EF Change Tracker.

EF Core предлагает много мощных фич для написания чистого и производительного кода.

> Вот 5, которые ты обязан знать: readme

🎧🎧

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
👍96🔥2😁1
Совет по Microsoft Visual Studio

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

Обычно используют #if DEBUG, но что если условие не связано с режимом отладки или релиза?

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

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

Важно иметь чёткие инструкции, в каких случаях применять такие символы, как в этом примере

Поддержи пост лайком если полезно ❤️

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
👍115
ReSharper теперь и в VS Code

Легендарный инструмент для C# разработчиков добрался до лёгкого редактора.

До этого ReSharper работал только в Visual Studio, теперь — прямо в твоем VS Code.

> Умные подсказки и автодополнение
> Продвинутый анализ кода
> Быстрые рефакторинги
> Навигация как в Rider

Редактор поменялся — ReSharper остался 💪

> Подробнее: https://jb.gg/rs-in-vscode-tw

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
👍137🤯2
Новый API для поддержки динамически генерируемых схем OpenAPI в документации, появившийся в ASP.NET 10 Preview 4

🐸🐸

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍3
Совет по LINQ:

Вызывай ToList() после фильтрации, а не до.

Почему?

> В первом случае всё загружается в память до фильтрации
> Во втором — фильтрация происходит на источнике, что лучше для БД или больших коллекций
> Особенно важно при работе с EF Core или API, использующих IQueryable

🎉🎉

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21🔥5😁5🤯1