Pull to refresh

Comments 40

По последним новостям WinUI 3 не будет поддерживать UWP. И, как следует из фразы разработчиков WinUI 3, "...Our focus is on trying to reach out to the existing very large community of Win32 desktop developers" идет возврат опять к классическому Win32 десктопу. Поэтому будущая судьба UWP у меня под большим вопросом.

И эти метания Microsoft, честно говоря, уже надоели. WPF вроде как уже legacy, будет ли поддерживаться UWP большой вопрос. Тогда в чем смысл WinUI 3? Очередная обертка над Win32?

В этом плане Qt выглядит как оплот стабильности для современной декстоп разработки.

По последним новостям WinUI 3 не будет поддерживать UWP

Это хайп по фразе вырванной из контекста. Собственно ответом на это и была статья. Там был вопрос в духе "Можно ли будет запустить WinUI 3 на Xbox". И ответ - в ближайшее время нет, используйте UWP и WinUI 2.X, который продолжает развиваться.

В этом плане Qt выглядит как оплот стабильности для современной декстоп разработки.

стабильно телега не умеет в мониторы с разным DPI... Я надеюсь, Qt переедет на WinUI.

Это хайп по фразе вырванной из контекста. Собственно ответом на это и была статья. Там был вопрос в духе "Можно ли будет запустить WinUI 3 на Xbox". И ответ - в ближайшее время нет, используйте UWP и WinUI 2.X, который продолжает развиваться.

Может быть и так. Но я вот смотрю историю WinUI 3 roadmap в GitHub и вижу, что все упоминания UWP в контексте WinUI 3 были старательно убраны, например фразу

There's also a preview version of WinUI 3 available that supports
building UWP apps - 
see the [preview release notes](https://aka.ms/winui3/projectreunion-0.8preview).

заменили на

There's also a version of WinUI 3 available that includes experimental features.
You can read more about the Windows App SDK Preview at the following documentation.

Давайте вернемся к самому началу. Что такое UWP? Windows App SDK предназначена как раз упростить доступ к UWP, как к платформе. В том числе, к концу года они обещают поддержку жизненного цикла UWP приложений (те пресловутые 40 точек входа). Через какое-то время, они разрешать запускать приложения на Windows App SDK, использующие соответствующий жизненный цикл на Xbox, hololens и других устройствах.

Итого: UI будет от UWP приложений. Жизненный цикл будет доступен и тот и тот (пока правда непонятно как именно),  API от UWP, целевые платформы оттуда же. Но UWP почему-то мертв )

Стра(ш)нно представлять не увшный жизненный цикл и на xbox, hololens

Ну, как минимум у больших игр на Xbox своя атмосфера.

QtWidgets в режиме поддержки (новы фичи добавлять не будут). QML неплох но местами всё равно сыроват. А где еще есть декларативный UI?

WPF мертв, WinForms еле-еле обновляется (хоть что-то делают в репозитории), сомвестимость с .net framework ломают (https://docs.microsoft.com/en-us/dotnet/core/compatibility/winforms), WinUI только для Win10+ (а как же хотя бы win7, по статистикам еще ~20% ). MAUI обещали кроссплатформенным, но почему то linux должен поддерживаться сообществом.


На чем писать GUI? AvaloniaUI, UNO или ASP (razor \ blazor упаковынный в electron.net)?

WPF настолько мертв, что его в опенсорс выкладывают.

(а как же хотя бы win7, по статистикам еще ~20% )

15% и доля продолжает падать

MAUI обещали кроссплатформенным, но почему то linux должен поддерживаться сообществом.

ну и в Xamarin.Forms он только сообществом поддерживается. Никаких денег не хватит поддерживать линукс полноценно.

WPF настолько мертв, что его в опенсорс выкладывают.

Только новые фичи не принимаю, баги особо не фиксят, портировать не хотят (для портирования вроде не все части открыты).


15% и доля продолжает падать

Это всё еще ощутимо много. Когда winxp умерла, то win32 gui (С++) проекты всё еще можно было компилить под XP.

Ну так компильте. Если у вас заказчики завязаны на Win7 пишите на том, что работает там. Если на Win98, то могу только посочувствовать. Майкам-то для чего этим всем заниматься?

В корп секторе я бы так и сделал. Но когда пишешь для себя (например СПО), то уже возникают проблемы:


  • Новые библиотеки уже только под. net platform 2 или 2.1 (привет efcore, ef6 не имеет некоторых фич)
  • NetCore без бубна не поставить на Win7 \ 8 \ 8.1 (нужно ставить vcredist и обновления). Пользователей сложно заставить их ставить.
  • .Net Framework не кроссплатформенный. (NetCore в этом плане лучше, GUI на blazor пишу)

Но когда пишешь для себя (например СПО), то уже возникают проблемы:

ну тут уже либо шашечки, либо ехать. Хотите современные средства разработки - пишите под современные версии ОС.

В целом статья хорошая! Наконец-то структурировали все эти фреймворки. А то черт ногу сломит что есть что :)

Кроме того, в UWP появился Composition API для визуально богатых, но экономичных с точки зрения ресурсов анимаций.

На самом деле это очень крутая часть UWP.

Как-то на работе рассматривали UWP, как целевую платформу для нашего клиентского приложения. Песочница, конечно, сразу сильно расстроила - много ограничений, а обход их частенько не самый тривиальный. Впрочем, на это многие указывали. Всякие API - это конечно местами удобно, но похожее и различными либами добивается в WPF. Но вот когда потыкали UI - это конечно бомба.

Как бы песочница, различные API - это всё круто, но когда UI подтормаживал в WPF - это сильно огорчало. Жаль, что в WPF архитектурно такое не завести.

Кстати, кто-нибудь в курсе: как в Avalonia работают анимации (чисто рендерные)? Изменения в UI пробрасываются (как WPF) или в отдельном потоке (как UWP)?

Ну вот сейчас этот UI будет доступен через Windows App SDK и вне песочницы

Как раз сейчас WinUI 3 уже тыкаем (ну как тыкаем, приложение почти перенесено). Правда сыроват ещё фреймворк, хоть и говорят, что он production-ready.

В авалонии анимации ближе к ВПФ. Вопрос об лучшей оптимизации в авалонии можно поднять, но мне самому интересен ответ был бы.

В перспективе планируется реализовать подход UWP с анимациями не над деревом элементов в UI потоке, а над визуальными примитивами на рендер потоке.

А WinUI и Windows App SDK допускают сборку, установку и запуск без магазина приложений Microsoft? Так как на работе это практически не используется. Меня ещё напрягло при осваивании UWP из интереса тем, что надо писать программу и запускать в режиме разработчика. Поэтому остался на WPF. MAUI пока не знаю. Единственное, что непонятно — это поддержка Linux. Если поддержки Linux так и не предвидится, то придётся смотреть в сторону Avalonia. Так как на работе нередко спрашивают про возможность запуска приложений на Linux. Поэтому там часто запускают на Java и Python.

Технически и UWP допускает установку мимо стора, надо только правильный сертификат установить.

Насчет Winui, я немного запутался. До недавнего времени там только запакованные приложения работали (а значит тоже сертификат нужен), вроде в Windows App SDK 8.0 и не запакованные можно, но там скорее всего куча проблем пока. Обещают в четвёртом квартале 2020

Правильным сертификатом подписать..

У меня есть небольшое ощущение, что всё это как-то слишком сложно стало..

И да и нет. Наплодили разных и похожих названий для одного и того же...

Я, возможно, упускаю какой-то технический нюанс, но зачем было городить это всё вместо создания, какого-то аналога Авалонии, без бесконечного количества костылей. Это всё выглядит как: у нас есть тонна работающего-кроссплатформенного и нет кода, давайте же любыми средствами попытаемся унифицировать это всё дело.

Почему, создание «нулёвого» кросс-п аналога сложнее?

Что такое "вот это всё". И что значит "тонна работающего кросс-платформенного и нет кода"?

Ну, очевидно.. Xamarin (и его разновидности). Я не слышал ни одного положительного отзыва от тех кто ним пользовался. Всё классно только в теории. Даже з обычным WPF, постоянно какие-то траблы если достаточно глубоко копнуть. Могу только представить, что там.

Везде есть траблы, если глубоко копать. Какая связь между Xamarin, WPF и Авалонией я честно говоря не понимаю. Вы можете как-то чётче сформулировать свою мысль.

Xamarin - хороший инструмент для своих задач. Единственная его проблема, это то, что иногда его применяют там, где кроссплатформа сама по себе лишняя. Ну и Xamarin.Forms на андроиде тормозит при мало-мальско сложной верстке. Но если использовать нативные axml - всё прекрасно.

Хорошо.
Допустим у нас есть абстрактный телеграм который должен работать везде (насколько я помню, то десктопная версия на Qt и мобильные каждая на своей платформе написана)

Как подобная задача должна решаться в .net на даный момент? (да, еще есть веб-версия)

насколько я помню, то десктопная версия на Qt и мобильные каждая на своей платформе написана

На мак есть своя нативная версия.

Как подобная задача должна решаться в .net на даный момент?

Смотрите, ядро телеги написано на C++. Если оставлять его, то я бы ничего не трогал, разве что клиент для винды написал бы на UWP/Winui. Собственно таким клиентом я и пользуюсь. Называется Unigram, иногда даже с Xbox запускаю, чтоб переслать себе же что-нибудь. И вероятно вообще не трогал бы. Net, т.к у меня C++ разработчики.

Если ядро переписывать прям сейчас, то смотрел бы в сторону .Net 5/6. С использованием ренжей и других оптимизирующих фич, кажется и криптографию сейчас можно делать быструю. Использовал бы MVVM и всё, вплоть до VM делал кроссплатформенном. Это бы работало на всех целевых платформах. А ui я бы писал нативный, под каждую из платформ. Не фанат я кроссплатформенного UI. Он обычно везде выглядит одинаково плохо.

Как альтернатива, можно посмотреть в сторону написания ui самого чата на React Native - это именно та часть визуала приложения, которая должна на всех платформах работать одинаково. Кроссплатформенное расширения для Microsoft Office работают именно на RN.

То, что Xamarin бегает на Моно — я вижу. А есть где подтверждение о том, что MAUI на Mono?

А, неправильно прочитал. Понял, спасибо

Очень раздражает, что под Windows 11 WinForms обновились визуально, а WPF приложения выглядят ровно как на WIndows 10 по прежнему

WinForms — просто обратка над нативным контролами, ничего обновлять не нужно. WPF же рисует контролы сама, надо обновлять стили для контролов, которые с Windows 8 не обновляли.

Вот теперь в winui если не переопределять их константы, стили будут адаптироваться под ОС. Правда в основном это используется для совместимости при бекпортировании. В winui 2.6 уже используются стили от win11

“Я не имею в виду, что этот API объявлен устаревшим” — а напрасно не имеете, он был объявлен устаревшим а сама Windows безнадёжной ещё на момент объяснений почему Метро. Что по жизни и подтвердилось.

По поводу «телефонного Silverlight (подмножества WPF)» я помню иначе — никакой он был не телефонный. А прибили его, скорее всего, потому, что на этом пути можно было, по крайней мере теоретически, обеспечить 100% безопасность.

По поводу «телефонного Silverlight (подмножества WPF)» я помню иначе

На Windows Phone 7 приложения писались на технологии которую МС так же назвали Silverlight. Но с вебовым SL общего было только то, что не все фичи WPF поддерживались.

Там же был не только вебовый, но и десктопный Silverlight. Очень неплохо, кстати, работал.

Если мне не изменяет память, то десктопный - тот же что и вебовый. Просто в какой-то момент SL-приложения разрешили устанавливать. Как PWA нынче

Sign up to leave a comment.

Articles