RU

DotNext 2026

Выложу здесь в одну статью серию постов из моего ТГ канала про то, как в этом году прошёл DotNext. 25 и 26 сентября в Москве прошла очередная конфер…

DotNext2026конференция.NETC#ИИ
Habr
RU

Поменяли object на Lock, и два потока встретились в критической секции

В .NET 9 появился новый примитив синхронизации System.Threading.Lock , и многие команды начали заменять привычные object -замки на новый тип в поиск…

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

RCE из одного XML-тега: разбираем небезопасную десериализацию XmlSerializer с нуля

Дисклеймер. Все описанное выполнялось в изолированной лаборатории на вымышленном приложении, которое я собрал специально для статьи. Совпадения имен…

небезопасная десериализацияXmlSerializerRCE.NETgadgetType.GetTypeдесериализацияdnSpyAppSecysoserial.net
Habr
RU

[Перевод] Как на wine.co.za упростили поиск по архиву из примерно 145 тысяч записей с помощью Manticore Search

На wine.co.za данные хранятся в MariaDB, раз в день копируются в Manticore, а сайт обращается к поиску через библиотеку для .NET. Разбираем, как уст…

Manticore SearchMariaDB.NETполнотекстовый поискпоисковые подсказкиwine.co.za
Habr
RU

Heartbeat: как мы создали систему управления системой вместо обычных сигналов

Привет! Меня зовут Александр Илларионов, я бэкенд‑разработчик в Altenar. Мы работаем на довольно сложном и при этом очень интересном…

heartbeatмикросервисыkubernetesprobesHealth Checks.NETC#мониторинграспределённые системыспортивные данные
Habr
RU

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

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

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

А чё, так можно было? Опечатка в исходниках .NET, которой больше 20 лет

В System.Random кто-то двадцать лет назад написал 21 вместо 31. Опечатку заметили, разобрали и оставили как есть — исправить, и new Random(42) начнё…

.NETC#Randomгенератор случайных чиселXoshiroBenchmarkDotNetпроизводительностьбезопасностьCLRсовместимость
Habr
RU

А чё, так можно было? Три недооценённых атрибута .NET

Три атрибута, которые меняют результат компиляции. Один запускает метод раньше Main . Второй передаёт текст выражения вместо результата. Третий уско…

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

А чё, так можно было? Приватное поле за 0,25 наносекунды

Чтение приватного поля через рефлексию занимает 8,96 наносекунды и выделяет 24 байта в куче. Тот же доступ без рефлексии — 0,25 наносекунды и ноль б…

.NETC#UnsafeAccessorрефлексияприватные полябоксингBenchmarkDotNetпроизводительностьоптимизация.NET 10
Habr
RU

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

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

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

А чё, так можно было? Порядок полей = 1,8× к скорости

Класс без единого поля занимает 24 байта, с двумя полями int — те же 24, а с тремя — уже 32. В структуре достаточно поменять местами два поля, и её…

.NETC#памятьразмер объектаструктурывыравниваниеBenchmarkDotNetпроизводительностьоптимизацияCLR
Habr
RU

А чё, так можно было? +1 ключ = ×12 к скорости

В словарь добавляют 101 ключ — поиск занимает 8 763 наносекунды. Добавляют 102-й — 718. Ключей стало больше, а времени в 12 раз меньше. Разбираемся,…

.NETC#Dictionaryхеш-таблицаколлизииhash floodingBenchmarkDotNetпроизводительностьоптимизациябенчмарк
Habr
RU

Как пишут базы данных на C#: RavenDb

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

RavenDbБаза ДанныхДокументно-ориентированнаямногомодельнаяС#.NETASP.NETOren EiniСоздание Базы ДанныхСУБД
Habr
RU

Месяц, 500M токенов и симулятор завода: как мы с ИИ-агентом построили имитационную модель производства чипов

Когда я прочёл о том, что Андрей Карпати больше не пишет код руками, а перешёл на агентное программирование, я, честно говоря призадумался. Скажи об…

Искусственный интеллектAI-кодингC#.NETимитационное моделированиеSimSharpLLMполупроводниковое производствоJSONRabbitMQ
Habr
RU

Архитектура TMS на .NET: кластер, потоки координат и объектное хранилище

Это разбор архитектуры системы управления транспортом — без сроков, без смет и без сравнения технологий по галочкам. Только устройство: из чего сист…

архитектура.NETинтеграцияEIPKafkaRabbitMQRedisPostgreSQLкластерпартиционирование
Habr
RU

Переезд с ESB на свой стек: что реально экономит бизнес

Разбираем систему управления транспортом — TMS.  Заказы приезжают из SAP, под них подбираются водитель и машина с учётом требований, рейс идёт…

миграцияESBWSO2рефакторингтехдолгинтеграция.NETархитектурастоимость разработкилегаси
Habr
RU

Сколько стоит интеграционный слой на WSO2 MI и EF Core: разбор реальной системы по строкам

Разбираем систему управления транспортом — TMS.  Не игрушечную и не с конференции: заказы приезжают из SAP, под них подбираются водитель и маши…

интеграцияESBWSO2Entity Frameworkлегасистоимость разработкитехдолг.NETархитектурамиграция
Habr