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

С вопросами можно пинать @nevoroman
Download Telegram
Что там в .NET?
Очередные циферки по производительности — на этот раз речь об Entity Framework. Окей, это внушительно.
Забавная деталь — бенчмарк, на основе которого посчитаны эти цифры, запускался не с MS SQL Server, а с PostgreSQL.

Причина в том, что это не какой-то специальный бенчмарк от Microsoft, а все тот же бенчмарк от TechEmpower (а конкретно Fortunes). Что делает эти измерения достаточно надежными и прозрачными.
А вот простая инструкция по апгрейду на .NET 6.

.NET Upgrade Assistant
API Portability Analyzer
И рекомендации, какой код стоит переписать (не из-за несовместимости версий, а из-за появления новых, более удобных инструментов)
А теперь нам показывают, как в связке работают MAUI и Blazor.

Догадаться в общем-то не сложно — BlazorWebView контрол, в него рендерится HTML - CSS - JS, привязки к серверу заменяются на привязки к C# приложению (оно работает в том же процессе, что радует).

В общем — принцип Electron, но все куда лучше оптимизировано. По меньшей мере, такое приложение не тащит с собой весь Chrome.
Еще одна интересная деталь — обещают, что Blazor компоненты можно будет легко смешивать с дефолтными десктопными/мобильными. При этом BlazorWebView займет только один экран (или часть экрана), а все остальное будет рендериться как обычно.

У меня есть некоторые опасения формата «а не будет ли такое смешение дорогим по перфомансу», но тут нужно мерить на конкретных примерах.

А заодно показали, как можно использовать Blazor компоненты в WinForms. Выглядело… забавно!
Напоследок Скот Хансельман в очередной раз демонстрирует, что .NET можно запустить совсем уж повсюду.

Например, на микроконтроллерах! С помощью .NET nanoFramework

https://www.nanoframework.net/
Ого, а теперь рассказывают про Uno — фреймворк для разработки кроссплатформенных UI на .NET!

Почему меня это удивляет? В основном потому что Microsoft сейчас очень активно разрабатывает конкурирующий инструмент (MAUI), но при это не стесняется рекламировать Uno на своей главной конференции для .NET разработчиков. Радуют!

https://platform.uno/
Итак, первый день подошел к концу! Какие выводы мы можем сделать?

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

Улучшения перфоманса на уровне .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 инструменты, это набор и качество реализации алгоритмов. О качестве по этому демо выводов сделать не получится (тут нужно отдельное большое сравнение с другими фреймворками), количество алгоритмов пока сильно отстает от передовых библиотек.

В общем, будем посмотреть.