Библиотека шарписта | C#, F#, .NET, ASP.NET
22.9K subscribers
2.26K photos
36 videos
85 files
4.42K links
Все самое полезное для C#-разработчика в одном канале.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/b60af5a4

Для обратной связи: @proglibrary_feeedback_bot

РКН: https://gosuslugi.ru/snet/67a5c81cdc130259d5b7fead
Download Telegram
🗂Паттерн Transactional Outbox в .NET: что это, как работает и как можно использовать библиотеку MassTransit для его реализации

🛟 Паттерн Outbox обеспечивает сохранение сообщений в хранилище данных, прежде чем они будут в конечном итоге переданы в брокер сообщений.

⚒️ Если бизнес-объект и соответствующие сообщения сохраняются в рамках одной транзакции базы данных, это гарантирует, что данные не будут потеряны.

🌐 Ник Чапсас разбирается с паттерном на практике и делится опытом работы с библиотекой MassTransit.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17
🤔 ФП vs. ООП

Дядя Боб считает (перевод), что споры сторонников функционального и объектно-ориентированного подхода не имеют смысла, так как эти парадигмы отлично уживаются вместе.

Более того, система, которая построена на комбинации принципов ООП и ФП максимизирует гибкость, поддерживаемость, тестируемость и простоту. Если убрать одно ради добавления другого, это только ухудшит структуру системы.

💬 А вы что думаете? Похоливарим?

#холивар
👍19❤‍🔥3
👀 Команда Avalonia UI сообщила о выходе из .NET Foundation

Решив, что взаимодействие с Foundation крайне ограничено, и каких-либо существенных преимуществ от участия в проекте Avalonia UI не получил, команда посчитала правильным вернуть его в руки тех, кто искренне увлечен и заинтересован в его будущем.

👉 Подробнее
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔27👍132
💡 Все винят LINQ в низкой производительности, но это не всегда так!

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

Читаемость немного ухудшится, но код все еще будет высокоуровневым.

#dotnet #csharp #benchmarks #tip by Сергей Тепляков
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥17👍6🎉1
⚡️ В Rider завезли поддержку .NET Aspire

.NET Aspire предоставляет набор инструментов и шаблонов для создания распределенных облачных приложений. Простой пример определения веб-приложения, зависящего от инстанса кэша Redis с помощью .NET Aspire:

// Create a distributed application builder given the command line arguments.
var builder = DistributedApplication.CreateBuilder(args);

// Add a Redis server to the application.
var cache = builder.AddRedis("cache");

// Add the frontend project to the application and configure it to use the
// Redis server, defined as a referenced dependency.
builder.AddProject<Projects.MyFrontend>("frontend")
.WithReference(cache);


Плагин Rider для .NET Aspire позволяет использовать функции .NET Aspire непосредственно в IDE. Под катом — внутренние механизмы плагина и детали его взаимодействие с .NET Aspire.

👉 Читать
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥236👍21
❤️ Каждый язык программирования обладает своими уникальными особенностями, которые влияют на выбор паттернов проектирования. C# — не исключение.

💬 Расскажите, какой паттерн проектирования вы нашли наиболее полезным в вашем последнем проекте? Почему выбрали именно его? Были ли какие-то специфические проблемы, которые решил этот паттерн?

#интерактив
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5😁3
🛠 Серия статей о профилировщике .NET под капотом от Datadog

🔸 Первая часть посвящена архитектуре и внедрению профилировщика. Вы узнаете про основные аспекты профилирования, включая CPU, wall time, exceptions, lock contention и allocations.
🔸 Во второй части рассматривается реализация профилирования CPU и wall time. Описывается, как профилировщик мониторит и семплирует потоки приложения, а также подробно объясняется реализация сбора стеков вызовов в Linux и Windows. Статья также включает пример внутреннего использования CPU профилировщика для снижения потребления CPU.
👍7
🤩 С большим опозданием публикуем полную коллекцию докладов с конференции DotNext 2022 Autumn

🌐 Сергей Васильев — Анализ C# кода на Roslyn: от теории к практике
🌐 Денис Цветцих — Rich Model и Anemic Model: враги или друзья
🌐 Проблемы обучения от 0+
🌐 Дмитрий Таболич — Думай как архитектор: майндшифт инженера
🌐 Дмитрий Нестерук — Интересные подходы в реализации паттернов проектирования
🌐 Андрей Парамонов, Антон Оникийчук — MediatR не нужен
🌐 Интервью с Романом Неволиным
🌐 Марк Шевченко — Пишем функционально на C# и F#
🌐 Дмитрий Сошников — Как научить вашего ребенка программировать (и не только)
🌐 Анатолий Жмур — Пиши, как тиктокер, а не как дед. Новые конструкции языка C# в бою
🌐 Олег Сафонов — Пишем код, когда пишем код: source generator'ы
🌐 Андрей Цветцих — Zero-downtime deployment и базы данных
🌐 Интервью с Вадимом Мартыновым
🌐 Роман Просин — SkillsFlow: разработка системы управления навыками и компетенциями
🌐 Объединяем .NET-разработчиков: как запустить и развить гильдии в компании
🌐 Гурий Самарин — Тестируем код, взаимодействующий с базой данных
🌐 Интервью с Дмитрием Таболичем
🌐 Best practices для разработки Application Layer
🌐 Роман Неволин — Пишем приложения, которые не ломаются в продакшене
🌐 Андрей Акиньшин — Поговорим об описательной статистике перформанс-распределений
🌐 Игорь Лабутин — Что нового в .NET 7 и C# 11
🌐 Евгений Пешков — Алгоритмы троттлинга запросов
🌐 Вадим Мартынов — Как работает конвейер в современных процессорах
🌐 Станислав Сидристый — lock(_sync): иллюзия идеального выбора
🌐 Ольга Щербакова — Open source с точки зрения юриста
🌐 Игорь Шаталкин — Загадочный EF Core, или Как написать свое расширение
🌐 Андрей Ганичев — Архитектурные тесты
🌐 Александр Катин — [Test] + T = ❤️
🌐 Вагиф Абилов — Распределенный трейсинг OpenTelemetry вместо логирования всего подряд
🌐 Александр Кузнецов — Введение в Microsoft SignalR
Please open Telegram to view this post
VIEW IN TELEGRAM
👏227👍7😁4❤‍🔥3
🎙 Подкаст DotNet & More: эволюция модульных тестов и не только

🕘 Таймкоды:

00:00:00 — Вступление
00:05:30 — Что такое тесты?
00:13:20 — Как зародились модульные тесты?
00:29:00 — FIRST принцип
00:38:00 — Развитие «после модульных тестов»
00:44:00 — Что такое «модуль»?
00:53:20 — Тестирование приватных методов
01:05:40 — Как тестировать конвертеры System.Test.Json?
01:10:10 — Mock vs Stub
01:24:00 — Random в тестах: зло или «почему нет»?

⏯️ YouTube | Apple Подкасты | Google Подкасты | Яндекс Музыка

#подкасты
Please open Telegram to view this post
VIEW IN TELEGRAM
9👍75
🆚 Task.Run vs. TaskCompletionSource + ThreadPool.QueueUserWorkItem

Сергей Тепляков раскопал шаблон (эпохи .NET 4.0) для запуска кода в пуле потоков

#dotnet #csharp #benchmarks
👍20😁4
Использование именованных пайпов с ASP.NET Core и HttpClient: гайд от Эндрю Лока

В рамках .NET 8 в ASP.NET Core была добавлена прямая поддержка именованных пайпов в Kestrel, что позволяет использовать все те же функции и модель программирования ASP.NET Core, что и с TCP.

📌 Настройка приложения для прослушивания именованных пайпов: настраиваем Kestrel с использованием ListenNamedPipe() или устананавливаем URL-адреса приложения на https://pipe:/<pipename>.

📌 HttpClient для отправки запросов: для этого необходимо настроить HttpClient с пользовательским ConnectCallback(), который создаст экземпляр NamedPipeClientStream и подключится к серверу.

👉 Подробнее читайте в гайде
🔥4👍1
Forwarded from Библиотека программиста | программирование, кодинг, разработка
🐱🎨🙏🤖 10 самых странных языков программирования, о которых вы никогда не слышали

Эзотерические языки разрабатывают в концептуальных, экспериментальных и развлекательных целях. Их общая черта — максимально запутанный и странный синтаксис, понятный только посвященным. В этой подборке — языки, которые выбрали бы Ходор, доктор Лектер, Малевич, Джеймс Бонд, Терминатор и Луи Армстронг, если бы решили войти в айти.

👉 Читать статью
👉 Зеркало
🥱62😁2👾1
🤦‍♂️ Silverlight забыли

#maui #жиза
👍46😁17👾6👏4🎉1