RU

А чё, так можно было? Три места в .NET, которые не развидеть

Пустой наследник Random работает медленнее родителя. string[] и object[] оказываются одним объектом. А Matrix4x4 до сих пор держит шестнадцать полей…

.NETC#обратная совместимостьнаследованиеRandomSpanковариантность массивовMatrix4x4BenchmarkDotNetпроизводительность
Habr
RU

А чё, так можно было? Недокументированный C#

В C# есть четыре ключевых слова, которых нет в документации. Компилятор их принимает. Одно из них собирается на любой машине, а выполняется только н…

.NETC#недокументированные возможностиTypedReferenceключевые словаCLRрантаймкомпиляторвнутреннее устройствоотладка
Habr
RU

redb.Identity: OAuth 2.1 / OpenID сервер на .NET, где протокол отделён от транспорта, по шине или вообще без сети

Есть три привычных способа сделать OAuth/OIDC в .NET, и каждый чем-то неудобен. Первый —  ASP.NET -привязанные  решения (Duende IdentitySe…

OAuth 2.1OpenID Connectidentity serverаутентификацияSSOOpenIddict.NETC#SCIMMFA
Habr
RU

Plumix: как я переписываю Flutter на C# — вместе с ИИ

Я скучал по C#, когда писал на Flutter, и по Flutter — когда писал на C#. Поэтому взял и совместил: Plumix — фреймворк с флаттеровской архитектурой…

PlumixFlutterC#.NETAvaloniaдекларативный UIкроссплатформенная разработкаImpellerИИ-агентыopen source
Habr
RU

Все тесты зелёные, платежи зависли: 5 граблей интеграции без песочницы

Осенью 2022-го мы добавляли в наш платёжный агрегатор новый способ оплаты: плательщик уходит по ссылке в приложение своего банка, подтверждает платё…

вебхукиидемпотентностьполингинтеграция платежейплатёжный провайдеротказоустойчивостьтестированиеwebhooks.NETC#
Habr
RU

redb.Route — Apache Camel для .NET, который мы написали потому что выхода другого не было

У вас не 5 микросервисов — у вас  десятки . Бэкенд, который рос три года: монолит, расколотый на куски, GPS-фид от автопарка, мобильное приложе…

C#.NETESBEIPApache CamelKafkaRabbitMQинтеграцииopen-sourceredb.Route
Habr
RU

Убейте GC-спайки в играх и сервисах: коллекции без аллокаций на .NET

Каждый разработчик на .NET сталкивался с этим. Всё работает быстро, но иногда случается внезапный фриз. Игра проседает с 60 до 30 FPS на секунду. Се…

.NETC#производительностьGameDevвысоконагруженные системы
Habr
RU

Вы неправильно используете IDisposable: почему using не спасает, когда объект утекает в другой поток

using в C# выглядит как универсальная страховка от утечек ресурсов, пока объект живёт строго внутри одного метода. Но стоит верн…

C#.NETIDisposableusingDisposeIAsyncDisposableHttpClientDI-контейнеруправление ресурсамиObjectDisposedException