Что там в .NET?
523 subscribers
37 photos
79 links
Рассказываем, что происходит в мире .NET.

С вопросами можно пинать @nevoroman
Download Telegram
Кстати о низкоуровневых оптимизациях, в .NET 6 добавили NativeMemory APIs. Они позволяют вручную управлять памятью, по аналогии с функциями malloc, free и прочими подобными из C.

https://devblogs.microsoft.com/dotnet/announcing-net-6-preview-7/#libraries-nativememory-apis
В статье о переезде Azure AD gateway на .NET 6 нашел еще одни красивые показали перфомансных оптимизаций.

Использование CPU упало на 33% — при той же самой нагружке. В целом же выигрыш в производительности (вернее, в application efficiency) разработчики оценили в 50%, где application efficiency это (Requests per second) / (CPU utilization of application)

В общем, советую посмотреть статью. Она не столько про Azure, сколько про сам процесс миграции на .NET 6

https://devblogs.microsoft.com/dotnet/azure-active-directorys-gateway-is-on-net-6-0/
Вышла отличная статья о мониторинге в .NET с использованием OpenTelemetry. Хорошо вводит в тему и дает много ссылок на дополнительные ресурсы.

https://www.meziantou.net/monitoring-a-dotnet-application-using-opentelemetry.htm#monitoring-multiple
Еще один интересный результат замеров производительности .NET 6, на этот раз не от Microsoft. Александр Якунин, автор популярного фреймворка для real-time приложений Fusion, перевел свой проект на .NET 6 и померил производительность. Результаты получились весьма приличные, в некоторых местах рост составил до 40%.

https://alexyakunin.medium.com/net-6-vs-net-5-up-to-40-speedup-ceca9112d298?source=friends_link&sk=1da518553a5264a1fe6cbb332b0716bb
Контент для любителей перфоманса — записи с конференции Dotnetos Conference 2021!

Если кто не слышал, Dotnetos это польская конференция по .NET. От многих других она отличается жестким упором на перфоманс и прочие низкоуровневые моменты. На youtube доступен плейлист со всеми записями, а я выделю несколько докладов, которые понравились мне больше других.

David Fowler - Don’t need to understand the details of .NET. Until you do

Отличный доклад о том, как и зачем вообще копаться в деталях реализации от человека, который разрабатывал Nuget, SignalR и ASP.NET Core.

Adam Furmanek - Hacking C# from the inside

Адам рассказывает, как заставить .NET делать странное. Перегружать неперегружаемое, сериализовать несереализуемое и всячески издеваться над GC. Доклад из серии «не повторяйте это дома», но знать все эти трюки как минимум интересно.

Jiří Činčura - How I put .NET into Firebird database engine

История того, как база данных Firebird училась работать с .NET. Очень интересный доклад и из-за решаемой проблемы, и из-за количества разнообразных трудностей, встреченных на пути.
В этот четверг пройдет онлайн-митап о функциональном программировании и F#. Как эти штуки изучать (и начинающим, и желающим получить какие-то более практичные знания), откуда брать материалы и зачем все это нужно. Спикером будет Вагиф Абилов, он постоянно выступает с докладами про ФП и уже много лет работает с большим проектом, написанным на F#.

Пройдет в четверг, 25 ноября, в 17:00 по Москве. Регистрация на TimePad.
Продолжаем осваиваться с новинками из .NET 6! Конрад Кокоса написал статью о конфигурации dotnet-monitor с Prometheus и Graphana.

Напомню, dotnet-monitor это инструмент для мониторинга .NET приложений, который недавно наконец-то был официально выпущен Microsoft. Он позволяет удобно собирать логи, трейсы, дампы и прочие артефакты приложения — в том числе под Mac и Linux.

https://dotnetos.org/blog/2021-11-22-dotnet-monitor-grafana/
Нашел интересный выпуск подкаста Azure DevOps Podcast о Blazor в .NET 6.

Несмотря на название, об Azure здесь будет совсем мало, так что это именно интересная беседа о современном состоянии Blazor, его развитии, готовности к продакшену и прочем. Если вам интересно, что там на фронте отказа от JS — советую послушать.

http://azuredevopspodcast.clear-measure.com/michael-washington-on-blazor-in-net-6-episode-168
Вышел дайджест с новостями по .NET от JetBrains! Из интересного, помимо уже разобранных нами анонсов .NET 6, там можно найти много любопытных туториалов и пару пропущенных мной анонсов от JetBrains

https://blog.jetbrains.com/dotnet/2021/11/02/net-annotated-monthly-november-2021/
Наступил декабрь — первый месяц зимы и время разнообразных адвентов. Один из них — .NET Advent Calendar, в рамках которого каждый день будет выходить новая статья по .NET.

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

https://dotnet.christmas/
Кстати об адвентах — сегодня начался Advent of Code и мы будем каждый день публиковать видео с разбором сегодняшней задачи. Первое вот только что вышло.

https://youtu.be/6i7jm8W0Aic
Нашел еще один классный дайджест по .NET, который называется .NET R&D Digest. В нем достаточно много хороших материалов и по .NET, и по разработке ПО в целом. Что классно, это не анонсы, а именно хорошие R&D статьи. Советую!

https://olegkarasik.wordpress.com/2021/12/01/net-rd-digest-november-2021/
Одна из основных перфомансных фич нового .NET это Dynamic PGO, Profile-guided optimization. Они позволяют существенно ускорить ваше приложение за счет сбора дополнительной информации.

Егор Богатов, один из разработчиков .NET, написал разбор возможностей PGO — с деталями и бенчмарками.

https://gist.github.com/EgorBo/dc181796683da3d905a5295bfd3dd95b
Кстати, в этом же разборе нашел ссылку на целую кучу бенчмарков по .NET.

Выглядит странно и хаотично, но пользоваться этим можно примерно так. В самом низу экрана написан номер страницы. Нажимаете на него — получаете список категорий бенчмарков. Выбираете интересную (например, Blazor WASM) — получаете возможность наблюдать, как с разнообразными изменениями улучшался перфоманс той или иной фичи.

Где-то изменений совсем не видно, где-то они незначительные, но в некоторых местах можно посмотреть на красивые-впечатляющие циферки.

https://msit.powerbi.com/view?r=eyJrIjoiYTZjMTk3YjEtMzQ3Yi00NTI5LTg5ZDItNmUyMGRlOTkwMGRlIiwidCI6IjcyZjk4OGJmLTg2ZjEtNDFhZi05MWFiLTJkN2NkMDExZGI0NyIsImMiOjV9
На YouTube начали заливать записи с прошедших DotNext, так что я буду иногда кидаться в вас самыми интересными из этих докладов.

Начнем с одного из самых уникальных выступлений прошедших конференций. Два Дмитрия, Иванов и Мордвинов, рассказали нам о символьном исполнении в .NET. Доклад получился практическим, исследовательским и мозговзрывающим одновременно.

Раз — тесты можно не писать, тесты можно генерить. Для этого в .NET есть IntelliTest. Объяснять, почему генерация тестов это приятно вроде бы не нужно — их и писать лень, и ошибиться в этом процессе легко. Но как гарантировать, что тесты корректно проверяют валидность вашего кода?

Два — под всем этим лежит солидная теоретическая база, в основе которой SMT-солверы. Мощнейший инструмент, позволяющий решать очень разнообразные проблемы — и Дмитрии кое-что нам об этом расскажут.

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

Короче, очень любопытный контент получился, не жаль потратить час времени.

https://youtu.be/csbuDEEWXHw
Еще немного интересного — увидел на днях в Твиттере гайд по поиску дедлоков. Причем не просто гайд, а игру-тренажер с огромным количеством практических заданий. Кажется, это самое полное и наглядное руководство по дедлокам, которое можно найти в интернете.

http://deadlockempire.github.io/
Нашел в CODE Magazine неплохую статью, посвященную .NET Upgrade Assistant — новому инструменту от Microsoft, который позволяет существенно упростить миграцию со старых версий .NET.

https://www.codemag.com/article/2111032
Зарелизились новые версии ReSharper и Rider!

Из самого заметного — полная поддержка всех фич .NET 6 и переработанный интерфейс.

Здесь можно почитать об изменениях в Rider, здесь — о ReSharper.