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

С вопросами можно пинать @nevoroman
Download Telegram
Итак, первый день подошел к концу! Какие выводы мы можем сделать?

Все ключевые инструменты заметно ускорились.

Улучшения перфоманса на уровне .NET 5, когда среднее приложение ускорилось на 30-35 процентов. Точнее можно будет сказать когда разработчики начнут мигрировать приложения на .NET 6.

Много улучшений практически для всех API.

Основной фокус — упрощения API и уменьшение бойлерплейта. Тоже приятно, делает .NET более дружелюбным для новичков.

Изменения в C# скорее косметические.

Однако они хорошо работают на одну из основных целей — упрощение кода и уменьшение бойлерплейта.

Кажется, Blazor (и даже его WebAssembly версия) готов к аккуратному втаскиванию в прод.

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


MAUI выглядит перспективно, но требует улучшений.

Я бы прогнозировал, что к .NET 7 он будет примерно на том же уровне, на котором сейчас находится Blazor.

Hot Reload — приятная мелочь.

В каких-то местах он не поддерживается, иногда требует перекомпиляции. Приятная фича, которая сделает разработку чуть более гладкой.

В общем, изменения в .NET 6 прям радуют. Очень много приятных мелочей и уверенное движение в сторону перфоманса/универсальности/простоты.
И начинается второй день .NET Conf! Первый доклад будет рассказывать о том, что нового .NET 6 принес в Blazor WebAssembly.

Посмотрим, что там интересного.
Фича, которую я совсем пропустил в анонсах: в Blazor WebAssembly добавили возможность компилировать сторонние зависимости в WebAssembly.

https://devblogs.microsoft.com/dotnet/asp-net-core-updates-in-net-6-rc-2/#native-dependencies-support-for-blazor-webassembly-apps
Чтобы вы понимали — это просто сишный метод, подключенный через DllImport, который вы можете запустить в Blazor WebAssembly. Ну то есть в браузере.
А на демо, например, запустили SQLite в браузере через WASM. Издевательство, но красивое.
А тут показывают симпатичный простой грид с виртуализацией, тоже радует.

Ну и сортировка, фильтры, все как положено.
А теперь с тем же Native Dependencies впихнули на фронт библиотеку на Rust.

Если это все реально будет также работать в суровом энтерпрайзе, то продано, Javascript официально мертв.
Демо просто убийственно хорошее получилось. Реализовали много полезного функционала, упихали все это в удобный-понятный грид, подключили кучу зависимостей, а потом впихнули это все в приложения на React и, блин, WPF — без какой угодно дополнительной работы. И это все классно работает вместе!

Приложение ни разу не лагало и не зависало, зато завис стрим — как раз на демо с впихиванием функциональности в WPF. Но в общем-то и ладно, мне новый Blazor уже продали.
Если что, трансляция конференции умерла и возвращаться пока не желает. Удивительно, в первый день ничего подобного не было, а тут с самого начала куча технических проблем.
Возможно, трансляцию остановились диверсанты-фронтендеры, боящиеся за свое положение на рынке труда.
Трансляция восстановилась, но теперь там не слишком интересный доклад о еще-одном-очень-простом-способе-запихать-приложение-в-Azure
Следующее демо показывало, что .NET умеет делать сегодня в плане машинного обучения. Выводы примерно такие:

- API выглядит привычнее и понятнее для .NET разработчиков, чем API других ML инструментов;
- Есть кое-какой тулинг упрощающий работу с данными;
- Одно из основных преимуществ ML.NET — простота доведения модели до продакшена.

Поясню последний пункт. Обучение модели и ее использование в продакшене это разные процессы. Настолько разные, что как правило обучают модель на условном Python, а потом используют в каком-нибудь другом коде — на .NET, Java и чем угодно еще. И это несколько усложняет процесс деплоя моделей, особенно если они постоянно обновляются. Поскольку ML.NET это часть .NET — задача заметно упрощается.

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

В общем, будем посмотреть.
Вкратце о прошедшем докладе: Azure Static Web Apps теперь поддерживает Blazor (в том числе WebAssembly), почитать о том, как это работает, можно вот тут:

https://docs.microsoft.com/ru-ru/azure/static-web-apps/deploy-blazor

Чего-то еще особенного не расскажу — доклады про Azure в основном показывают, как просто и красиво все работает.
Еще один доклад об Azure, на этот раз рассказывают об Azure Communication Services — наборе сервисов, позволяющих коммуницировать с пользователем разными способами. Звонки, видео, чаты и даже смски.

Ничего особо интересного от демо не ожидаю, так что просто скину страничку с информацией о сервисах.

https://azure.microsoft.com/en-us/services/communication-services/
А теперь нам рассказывают о том, как разрабатывать приложения для Microsoft Teams.

Судя по расписанию, ближайший доклад, относящийся к обновкам из .NET 6, будет аж в час ночи.
Любопытная фича VS Code — возможность создавать блокноты (эдакие markdown-файлы с возможностью запускать код), совмещающие в себе несколько языков.

Так, например, можно наглядно сравнивать реализацию концепций в разных языках
Мотивирующий слайд от Microsoft на тему «бросай OData, переходи на GraphQL»
Еще одно изменение .NET 6, которое можно было пропустить в анонсах — небольшое улучшение поддержки OpenTelemetry.

https://devblogs.microsoft.com/dotnet/announcing-net-6-preview-7/#libraries-system-diagnostics-propagators
И куда более значительное изменение в рамках той же поддержки это новое API System.Diagnostics.Metrics

https://devblogs.microsoft.com/dotnet/announcing-net-6-preview-5/#libraries-support-for-opentelemetry-metrics