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

С вопросами можно пинать @nevoroman
Download Telegram
В этот четверг пройдет онлайн-митап о функциональном программировании и 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.
Вышел ежемесячный сборник новостей о .NET от JetBrains!

Из интересного, помимо очевидных релизов, там есть гайд по .NET разработке на новых M1 маках, ответ на вопрос «как работать с DI в Minimal API», а также интересная статья о том, как Source Generators могут сделать ваш код более уязвимым для атак. Советую пройтись, подборка получилась хорошая.

https://blog.jetbrains.com/dotnet/2021/12/09/net-annotated-monthly-december-2021/
В .NET сообществе очередная драма: все обсуждают предлагаемый в C# 11 оператор !!

Идея простая: оператор добавляется к сигнатуре параметра функции и означает запрет null. То есть если параметр, отмеченный таким оператором, будет равен null — вы получите исключение.

Вопросов у людей много. Зачем нужен оператор, который просто заменяет NullReferenceExceptions на ArgumentNullExceptions? Не странно ли это сочетается с nullable типами, зачем добавлять такую механику «сбоку»? Почему, в конце концов, два восклицательных знака?

Следить за дискуссией вы можете в этом issue в репозитории dotnet.
А вот простая инфографика, объясняющая предлагаемый оператор
Совсем забыл написать: на прошлой неделе вышел .NET 7 Preview 1.

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

Но это только на поверхности. В анонсах ASP.NET, Entity Framework и в отдельных issue на GitHub можно найти много интересных деталей. Так что ждите отдельных постов о самых интересных изменениях на этой неделе.