Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🥴4❤2
Вот 7 популярных репозиториев по архитектуре ПО (для .NET-разработчиков):
1. Эволюционная архитектура на примерах -> тык
2. Модульный монолит с DDD (предметно-ориентированным проектированием) -> тык
3. Стартер-кит на .NET 8 с поддержкой мультиарендности -> тык
4. Пример eCommerce-приложения на микросервисах в .NET -> тык
5. Пример архитектуры вертикальных срезов (Vertical Slice) -> тык
6. Шаблон .NET-приложения с чистой архитектурой -> тык
7. Пример приложения с гексагональной архитектурой -> тык
💖 — круто
👍 — сохранил
👉 @KodBlog
1. Эволюционная архитектура на примерах -> тык
2. Модульный монолит с DDD (предметно-ориентированным проектированием) -> тык
3. Стартер-кит на .NET 8 с поддержкой мультиарендности -> тык
4. Пример eCommerce-приложения на микросервисах в .NET -> тык
5. Пример архитектуры вертикальных срезов (Vertical Slice) -> тык
6. Шаблон .NET-приложения с чистой архитектурой -> тык
7. Пример приложения с гексагональной архитектурой -> тык
Please open Telegram to view this post
VIEW IN TELEGRAM
👍32🔥7❤2🐳1
Трассировка .NET-приложений с OpenTelemetry
Вы можете экспортировать телеметрию в Grafana, Seq, App Insights и другие.
Вот несколько библиотек OpenTelemetry для добавления в приложение:
> HttpClient
> AspNetCore
> EF Core
> Redis (StackExchange)
> PostgreSQL (Npgsql)
При запуске приложения вы сразу увидите трассировки от этих библиотек
OpenTelemetry позволяет глубже понять, как работает ваше приложение
Подробнее тут❤️
👉 @KodBlog
Вы можете экспортировать телеметрию в Grafana, Seq, App Insights и другие.
Вот несколько библиотек OpenTelemetry для добавления в приложение:
> HttpClient
> AspNetCore
> EF Core
> Redis (StackExchange)
> PostgreSQL (Npgsql)
При запуске приложения вы сразу увидите трассировки от этих библиотек
OpenTelemetry позволяет глубже понять, как работает ваше приложение
Подробнее тут
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤3
В .NET 10 завозят
Наконец-то можно будет перемешивать
Зачем это нужно?
— случайный выбор без повторений
— data seeding
— игры, ML, генераторы тестов и т.п.
Микро-удобство, но то, что надо💯
> Ссылка на обсуждение:
https://github.com/dotnet/runtime/issues/111221
❤️ — ждем
👉 @KodBlog
Shuffle() для LINQНаконец-то можно будет перемешивать
IEnumerable<T> без OrderBy(_ => Guid.NewGuid()) и кастомных костылей.Зачем это нужно?
— случайный выбор без повторений
— data seeding
— игры, ML, генераторы тестов и т.п.
Микро-удобство, но то, что надо
> Ссылка на обсуждение:
https://github.com/dotnet/runtime/issues/111221
Please open Telegram to view this post
VIEW IN TELEGRAM
👍29🔥5❤2
Используй
Избегай
Почему?
> Ноль аллокаций
> Молниеносный доступ к памяти
> Идеально для кода с жёсткими требованиями к производительности
🤍
👉 @KodBlog
Span<T> для высокопроизводительного среза массивов без выделения памяти.Избегай
ToList(), если он не нужен Почему?
> Ноль аллокаций
> Молниеносный доступ к памяти
> Идеально для кода с жёсткими требованиями к производительности
Please open Telegram to view this post
VIEW IN TELEGRAM
👍26❤3
Одна из крутых фич в Microsoft Visual Studio — External Tools
Они позволяют разработчику подключать свои утилиты > например, обновлять версию .NET Framework или автоматически добавлять NuGet-пакеты в
Мне надоело вручную подключать Serilog в новые проекты на
А для быстрой настройки Serilog в
> Проект: chekme👊
👉 @KodBlog
Они позволяют разработчику подключать свои утилиты > например, обновлять версию .NET Framework или автоматически добавлять NuGet-пакеты в
.csprojМне надоело вручную подключать Serilog в новые проекты на
ASP.NET Core, когда не используется кастомный шаблон. Вместо того чтобы писать скрипт самому — я просто попросил AI сгенерировать код.А для быстрой настройки Serilog в
Program.cs — использую шаблон ReSharper.> Проект: chekme
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
Хочешь, чтобы возраст считался сам? В этом примере —> таблица с датами рождения, где возраст считается прямо в SQL через computed column, а данные читаются через Dapper
> Без лишней логики в C#
> Лёгкая ORM
> Всё работает как обычное свойство
Репозиторий с примером: https://github.com/karenpayneoregon/sql-basics/tree/master/DapperBirthdaysComputedColumns
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍5
Следующая крупная версия Visual Studio выйдет позже в этом году.
Как думаете, как Microsoft её назовёт? И как должна бы назвать?😎
👉 @KodBlog
Как думаете, как Microsoft её назовёт? И как должна бы назвать?
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21🥴5🔥1
Месяц назад один .NET-разработчик спросил меня:
«Какие Azure-сертификации ты порекомендуешь, чтобы продвинуться в .NET-карьере?»
Я ответил уклончиво: «Это зависит от ситуации»
Но поскольку это ужасный ответ, давай поясню.
Сосредоточься на тех сертификациях, в областях которых у тебя уже есть опыт. Или в тех, в которых ты хочешь получить больше опыта.
Исходя из этого, можно выбрать:
> Направление безопасности
> Направление разработки
> Направление инфраструктуры
> Направление данных и аналитики
Но важно помнить вот что:
Сертификаты бесполезны без опыта.
Если ты списываешь на экзаменах, рано или поздно это всплывёт
Поэтому:
1. Опыт > Сертификатов
2. Опыт + Сертификаты = сильное сочетание
3. Как правильно подходить к сертификациям? Сначала набери опыт, потом получай сертификаты
❤️ — ну это база
👉 @KodBlog
«Какие Azure-сертификации ты порекомендуешь, чтобы продвинуться в .NET-карьере?»
Я ответил уклончиво: «Это зависит от ситуации»
Но поскольку это ужасный ответ, давай поясню.
Сосредоточься на тех сертификациях, в областях которых у тебя уже есть опыт. Или в тех, в которых ты хочешь получить больше опыта.
Исходя из этого, можно выбрать:
> Направление безопасности
> Направление разработки
> Направление инфраструктуры
> Направление данных и аналитики
Но важно помнить вот что:
Сертификаты бесполезны без опыта.
Если ты списываешь на экзаменах, рано или поздно это всплывёт
Поэтому:
1. Опыт > Сертификатов
2. Опыт + Сертификаты = сильное сочетание
3. Как правильно подходить к сертификациям? Сначала набери опыт, потом получай сертификаты
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8😁2
Эффективная асинхронная передача данных
Когда работаешь с большими наборами данных — записями из базы, строками файлов и т.д. — не всегда хочется грузить всё в память сразу. Здесь отлично заходит
>
> Используй
> Данные подтягиваются лениво — обрабатываешь только то, что реально нужно
С
Преимущества:
1. экономия, даже на больших объёмах.
2. ничего не блокируется, UI не фризит
3. чисто и понятно, без колбэков и костылей💖
👉 @KodBlog
Когда работаешь с большими наборами данных — записями из базы, строками файлов и т.д. — не всегда хочется грузить всё в память сразу. Здесь отлично заходит
IAsyncEnumerable<T>>
IAsyncEnumerable<T> — позволяет стримить данные асинхронно, без блокировки потоков> Используй
yield return, чтобы возвращать элементы по одному> Данные подтягиваются лениво — обрабатываешь только то, что реально нужно
С
await foreach всё читается и обрабатывается по мере поступления, не блокируя выполнениеПреимущества:
1. экономия, даже на больших объёмах.
2. ничего не блокируется, UI не фризит
3. чисто и понятно, без колбэков и костылей
Please open Telegram to view this post
VIEW IN TELEGRAM
💯16👍7🔥3❤1
This media is not supported in your browser
VIEW IN TELEGRAM
Режим GitHub Copilot Agent теперь доступен в preview для Visual Studio 17.14!
> Подробнее: msft.it/6012SZusi🤍
👉 @KodBlog
> Подробнее: msft.it/6012SZusi
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤2🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
7 архитектур, которые стоит знать каждому разработчику
👉 @KodBlog
> Монолит
Всё в одном проекте. Легко развернуть и начать разработку, но с ростом системы поддержка становится сложной. Подходит для небольших или быстрых MVP.
> MVC
Классика веб-фреймворков. Модель, представление и контроллер. Работает отлично, если роли чётко разделены (спойлер: многие контроллеры в итоге становятся объектами-богами)
> Master-Slave (сейчас чаще говорят Leader-Follower)
Популярен в БД: один командует — остальные копируют. Увеличивает отказоустойчивость, но если синхронизация сломается — беда.
> Многослойная архитектура
Знаменитый “lasagna code”: слой представления, логики, доступа к данным, база. Хорошо структурирует, но если перегнуть — становится медленно и громоздко
> Микросервисы
Каждая функция живёт отдельно. Масштабируются отлично, но усложняется тестирование, логирование и деплой. Подход не для всех проектов.
> SOA (сервис-ориентированная архитектура)
Более формальный родственник микросервисов. Часто встречается в больших компаниях и старых системах. ESB (Enterprise Service Bus) сначала кажется полезным. пока не становится главным узким местом.
> Событийно-ориентированная архитектура
Идеальна для приложений в реальном времени. Всё основано на событиях. Очень мощная, но если что-то пойдёт не так.. найти баг — непросто
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10❤5
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
Изучи эти репозитории:
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
Закинь в закладки — пригодится
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤2😁1
Добавили метод
Это появится в❤️
👉 @KodBlog
UseKestrel() в WebApplicationFactory Это появится в
ASP.NET 10 Preview 4 и даст простой способ включить использование сервера Kestrel в WebApplicationFactory Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤4
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥1
Метод-расширение для
❤️
👉 @KodBlog
TagWith в Entity FrameworkTagWith() очень полезен для добавления отладочной информации в логи запросов, но, конечно, мы также можем обернуть его и добавить дополнительную информацию через простой extension method, как в примере выше Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤3
ORM — не проблема. Проблема — как разработчики ими пользуются
Как часто ты видишь, что во всём винят ORM?
Если ты не понимаешь SQL (или любую другую базу данных) — это уже твоя ответственность
Но если ты разбираешься в базовых принципах работы с БД, ты сможешь выжать из ORM максимум
Вот простой пример с EF Core:
— обновление списка уведомлений по одному
— обновление всех уведомлений одной операцией
Что будет быстрее?
Конечно тот вариант, где меньше обращений к базе.
Именно тут блестяще работает EF Bulk Update — ты можешь писать оптимальные
Вместо множества SQL-запросов — один.
Но даже у такого подхода есть подводные камни, о которых стоит знать:
> читать
👉 @KodBlog
Как часто ты видишь, что во всём винят ORM?
Если ты не понимаешь SQL (или любую другую базу данных) — это уже твоя ответственность
Но если ты разбираешься в базовых принципах работы с БД, ты сможешь выжать из ORM максимум
Вот простой пример с EF Core:
— обновление списка уведомлений по одному
— обновление всех уведомлений одной операцией
Что будет быстрее?
Конечно тот вариант, где меньше обращений к базе.
Именно тут блестяще работает EF Bulk Update — ты можешь писать оптимальные
UPDATE и DELETE запросы.Вместо множества SQL-запросов — один.
Но даже у такого подхода есть подводные камни, о которых стоит знать:
> читать
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14❤2🔥2
Что такое Queue<T>?
Queue<T> — это коллекция в C# с принципом FIFO (первым пришёл — первым ушёл).
То есть первый добавленный элемент будет извлечён первым.
Когда использовать?
> Планирование задач
> Очереди на печать
> Обработка сообщений
> Поиск в ширину (BFS) в графах
Пример прикрепил, с вас лайк❤️
👉 @KodBlog
Queue<T> — это коллекция в C# с принципом FIFO (первым пришёл — первым ушёл).
То есть первый добавленный элемент будет извлечён первым.
Когда использовать?
> Планирование задач
> Очереди на печать
> Обработка сообщений
> Поиск в ширину (BFS) в графах
Пример прикрепил, с вас лайк
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20🔥5😁3❤1
.NET 10 Preview 4 — больше производительности и удобства
Вышла четвёртая превью-версия .NET 10
В ней — новые возможности языка, улучшения рантайма и прокачанная AOT-компиляция.
Также улучшили поддержку cloud-native сценариев и диагностику — определённо стоит попробовать😡
> Подробнее: https://devblogs.microsoft.com/dotnet/dotnet-10-preview-4/
👉 @KodBlog
Вышла четвёртая превью-версия .NET 10
В ней — новые возможности языка, улучшения рантайма и прокачанная AOT-компиляция.
Также улучшили поддержку cloud-native сценариев и диагностику — определённо стоит попробовать
> Подробнее: https://devblogs.microsoft.com/dotnet/dotnet-10-preview-4/
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍3
Если ты до сих пор считаешь, что EF Core медленный в 2025 году — ты застрял в прошлом
Одна из его новых фич — поддержка bulk-удалений
Теперь ты можешь удалить любое количество записей за один запрос к базе.
Представим, что e-commerce платформа хочет удалить все корзины, которые не обновлялись больше года.
С
Но помни: bulk-операции обходят EF Change Tracker.
EF Core предлагает много мощных фич для написания чистого и производительного кода.
> Вот 5, которые ты обязан знать: readme
🎧 🎧
👉 @KodBlog
Одна из его новых фич — поддержка bulk-удалений
Теперь ты можешь удалить любое количество записей за один запрос к базе.
Представим, что e-commerce платформа хочет удалить все корзины, которые не обновлялись больше года.
С
ExecuteDelete это делается эффективно: выполняется один SQL-запрос DELETE, который сразу удаляет все старые корзины.Но помни: bulk-операции обходят EF Change Tracker.
EF Core предлагает много мощных фич для написания чистого и производительного кода.
> Вот 5, которые ты обязан знать: readme
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤6🔥2😁1