Uwp приложения в windows 10 что это

Обновлено: 02.07.2024

UWP — это один из многих способов создания клиентских приложений для Windows. Приложения UWP используют API WinRT для предоставления мощных пользовательских интерфейсов и расширенных асинхронных функций, которые идеально подходят для устройств, подключенных к Интернету.

Чтобы скачать средства, требуемые для создания приложений UWP, ознакомьтесь со сведениями о подготовке, а затем напишите свое первое приложение.

Какое место принадлежит UWP в истории разработки Майкрософт?

История разработки Майкрософт получила логическое развитие с реализацией UWP — мощного средства для создания клиентских приложений, используемого наряду с такими инициативами, как WinUI, MSIX и Project Reunion.

Возможности приложения UWP

Основные достоинства приложения UWP.

Рассмотрим все это более подробно.

Безопасность

В манифестах приложений UWP объявляются возможности устройства, необходимые приложению, — например, доступ к микрофону, геоданным, веб-камере, USB-устройствам, файлам и т. д. Прежде чем приложение получит доступ к возможности, пользователь должен подтвердить и разрешить такой доступ.

Общая поверхность API для всех устройств

В Windows 10 впервые появилась универсальная платформа Windows (UWP), которая предоставляет общую платформу приложений на любом устройстве, работающем под управлением Windows 10. Основные API UWP одинаковы на всех устройствах Windows. Если ваше приложение использует только основные API, оно будет работать на любом устройстве под управлением Windows 10, независимо от того, под какое устройство оно разрабатывалось — ПК, Xbox, гарнитуру смешанной реальности и т. п.

Приложение UWP, написанное на C++ /WinRT или C++ /CX, имеет доступ к API-интерфейсам Win32, которые входят в состав UWP. Эти API Win32 реализуются всеми устройствами с Windows 10.

Пакеты SDK расширений предоставляют уникальные возможности для конкретных типов устройств

Если вы разрабатываете приложение для универсальных API, такое приложение сможет работать на всех устройствах под управлением Windows 10. Но если вы хотите, чтобы ваше приложение UWP могло пользоваться преимуществами API конкретных устройств, это также возможно.

Пакеты SDK расширений позволяют вызывать специализированные API для различных устройств. Например, если ваше приложение UWP предназначено для устройства Интернета вещей, вы можете добавить в свой проект пакет SDK расширения для Интернета вещей, чтобы реализовать функции, характерные для устройств Интернета вещей. См. сведения в разделе Пакеты SDK расширений статьи Программирование с помощью пакетов SDK расширений.

Вы можете написать приложение так, чтобы оно было предназначено для запуска только на устройствах определенного типа, а затем ограничить его распространение в Microsoft Store только этим типом устройств. Или же вы можете реализовать условную проверку на наличие того или иного API во время выполнения и соответствующим образом адаптировать поведение своего приложения. См. сведения в разделе Написание кода статьи Программирование с помощью пакетов SDK расширений.

Следующее видео представляет собой краткий обзор семейств устройств и написания адаптивного кода:

Адаптивные элементы управления и ввод

Элементы пользовательского интерфейса реагируют на размер и плотность точек экрана, на котором выполняется приложение, и выбирают подходящий масштаб и макет. Кроме того, приложения UWP отлично работают с различными средствами ввода, такими как клавиатура, мышь, сенсорные устройства, перо и устройства управления Xbox One. Если нужно дополнительно настроить пользовательский интерфейс в соответствии с определенным размером экрана или типом устройства, новые панели макета и инструменты помогут вам разработать интерфейс, способный адаптироваться к различным устройствам и форм-факторам, на которых может работать ваше приложение.

Устройства под управлением Windows

Windows позволяет ориентировать пользовательский интерфейс на множество устройств с помощью следующих функций:

  • Универсальные элементы управления и панели макета помогают оптимизировать пользовательский интерфейс под любое разрешение экрана на конкретном устройстве. Например, такие элементы управления, как кнопки и ползунки, автоматически адаптируются к размеру и плотности точек на экране устройства. Панели макета помогают корректировать компоновку содержимого в зависимости от размера экрана. Адаптивное масштабирование подстраивается под различия в разрешении и DPI на всех устройствах.
  • Единая обработка ввода позволяет получать входные данные с помощью касаний, пера, мыши, клавиатуры или контроллера, например Microsoft Xbox.
  • Инструменты помогут разработать вам пользовательский интерфейс, способный адаптироваться под разные разрешения экрана.

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

Один магазин для всех устройств.

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

Приложения UWP можно упаковывать с использованием MSIX и распространять через Microsoft Store или другими способами. MSIX позволяет обновлять приложения независимо от способа их распространения (см. статью Обновление пакетов приложений, опубликованных не в Store, из кода).

Монетизация приложения

Вы можете выбрать способ монетизации своего приложения. Существует целый ряд способов заработать на своем приложении. Вам нужно только выбрать наиболее подходящий (примеры способов приведены ниже).

  • Платное скачивание — самый простой вариант. Просто назовите свою цену.
  • Ознакомительные версии позволяют опробовать ваше приложение перед покупкой. Так ваше приложение становится заметнее для пользователей, к тому же это увеличивает процент покупателей от общего числа посетителей по сравнению с более традиционными минимально-бесплатными версиями.
  • Скидки и распродажи, которые мотивируют пользователей совершить покупку.
  • Покупки из приложения.

Актуальная информация в реальном времени, которая побуждает пользователей вновь и вновь обращаться к приложению

Есть множество способов поддерживать интерес пользователей к приложению UWP.

  • Живые плитки и плитки экрана блокировки, на которые выводится краткий обзор актуальной и значимой в определенном контексте информации из приложения.
  • Push-уведомления, которые предлагают вниманию пользователей важные оповещения в нужный момент.
  • Действия пользователей, которые позволяют им продолжить работу в приложении с того места, где они остановились — даже на другом устройстве.
  • Центр уведомлений обеспечивает организацию уведомлений, поступающих из вашего приложения.
  • Фоновое выполнение и триггеры позволяют вашему приложению возобновлять работу именно тогда, когда это нужно пользователю.
  • Приложение может использовать голосовое управление и устройства Bluetooth LE, чтобы пользователи могли взаимодействовать с окружающим миром.
  • Интеграция с Кортаной позволяет добавить в ваше приложение возможности голосового управления.

Использование уже знакомого языка

Ссылки, которые помогут вам приступить к работе

Подготовка

Скачайте средства, необходимые для создания приложений, на странице Get set up (Подготовка), а затем создайте свое первое приложение.

Проектирование приложения

Корпорация Майкрософт предоставляет систему проектирования под названием Fluent. Fluent Design — это набор функций UWP в сочетании с рекомендациями по созданию приложений, которые будут прекрасно смотреться на всех типах устройств под управлением Windows. Разработанные с помощью Fluent приложения адаптируются к самым разным устройствам — от планшетов и ноутбуков до ПК и телевизоров, и даже к устройствам виртуальной реальности — и выглядят на них совершенно естественно. Вводные сведения о системе Fluent см. в статье The Fluent Design System for Windows app creators (Система проектирования Fluent для разработчиков приложений Windows).

Хорошее проектирование подразумевает принятие решений о том, как пользователи будут взаимодействовать с приложением, а также как оно будет выглядеть и функционировать. Взаимодействие с пользователем очень сильно повлияет на то, насколько люди будут довольны вашим приложением, так что не пренебрегайте этим шагом. Из статьи Проектирование и разработка приложений для Windows вы узнаете, с чего начинать проектирование универсального приложения для Windows. Сведения о проектировании приложений UWP, которыми будут довольны все пользователи, см. в руководстве по приложениям универсальной платформы Windows (UWP) для разработчиков. Прежде чем приступить к написанию кода, изучите вводную информацию об устройствах. Это поможет вам продумать взаимодействие с пользователем в приложении на устройствах любых форм-факторов, на которые вы ориентируетесь.

Помимо взаимодействия на разных устройствах, проектируйте приложение так, чтобы использовать все преимущества работы на разных устройствах. Например:

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

Подумайте, как вы реализуете прием нескольких типов ввода. Ознакомьтесь с руководством по взаимодействию, чтобы узнать, как пользователи могут взаимодействовать с вашим приложением с помощью Кортаны, службы "Речь", распознавания сенсорного ввода, сенсорной клавиатуры и других возможностей. Или ознакомьтесь с руководством по тексту и текстовому вводу, чтобы узнать больше о традиционных способах взаимодействия.

Добавление служб

  • Используйте облачные службы, чтобы выполнять синхронизацию между устройствами.
  • Узнайте, как подключаться к веб-службам для улучшения взаимодействия с приложением.
  • Включите в свой план push-уведомления и покупки из приложений. Эти функции должны работать на всех устройствах.

Отправьте приложение в Store.

Центр партнеров позволяет централизованно управлять всеми приложениями и держать в одном месте все приложения для устройств Windows. См. статью Публикация приложений и игр для Windows, чтобы узнать, как отправлять приложения в Microsoft Store для публикации.

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

Подробные вводные сведения см. в статье Windows 10 — An Introduction to Building Windows Apps for Windows 10 Devices (Вводные сведения о создании приложений для Windows для устройств с Windows 10).

Более сложные темы

Сопоставление универсальной платформы Windows (UWP) и API времени выполнения Windows

Если вы разрабатываете приложение для универсальной платформы Windows (UWP), вам будет намного проще и удобнее считать термины "Универсальная платформа Windows" и "Среда выполнения Windows (WinRT)" почти синонимами. Но у вас есть возможность заглянуть "под капот" этих технологий и определить различия между концепциями. Если вам это интересно, то этот последний раздел написан именно для вас.

И, само собой, API-интерфейсы WinRT можно вызвать из приложения UWP. Модель приложения UWP создана на основе среды выполнения Windows. С технической точки зрения модель приложения UWP основана на CoreApplication, но некоторые подробности могут быть недоступны в зависимости от выбора языка программирования. Как описано в этом разделе, с точки зрения ценности платформа UWP предназначена для создания единого двоичного файла, который вы сможете при желании опубликовать в Microsoft Store и запустить на любых устройствах самых разных форм-факторов. Охват устройств для приложений UWP зависит от API среды выполнения Windows, которые может вызывать приложение или которые вы можете вызывать условно.

Мы надеемся, что смогли описать в этом разделе разницу между базовыми технологиями API среды выполнения Windows и механизмом и ценностью универсальной платформы Windows.

11 февраля на конференции для разработчиков Microsoft 365 Developer Day компания Microsoft поделилась некоторыми деталями о работе новой операционной системы Windows 10X. Также был представлен эмулятор для разработчиков, позволяющий оптимизировать приложения для устройств с двумя экранами.

Эмулятор Windows 10X

Главная особенность Windows 10X заключается в том, что приложения запускаются в контейнерах. Подробнее остановимся на данной технологии и рассмотрим, какие типы приложений можно будет запустить на устройствах под управлением Windows 10X, таких как Surface Neo.

Три типа контейнеров для максимальной совместимости

Три типа контейнеров для максимальной совместимости

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

В Windows 10X абсолютно все приложения выполняются в контейнерах, которые являются частью архитектуры ОС. Разработчикам не нужно реализовывать какие-либо дополнительные изменения на высоком уровне для запуска приложений в Windows 10X.

Windows 10X поддерживает три типа контейнеров, один из которых является новым - Win32.

  • Win32 контейнер: предназначен для запуска «классических» 32-битных и 64-битных приложений Win32, WinForms, WPF, Electron и др. Данный контейнер схож со средой обычной настольной ОС. В Windows 10X предусмотрен один контейнер для всех приложений Win32, который обладает «высокой совместимостью» с существующим ПО.
  • MSIX контейнер с полным доверием: имеет высокую совместимость с существующими приложениями. Данный тип контейнеров работает изолированно от других приложений Win32 и может запускаться совместно с Win32 контейнером.
  • Все UWP-приложения: наименьшее влияние на производительность, хорошая автономность, а также наивысший уровень безопасности и конфиденциальности.

Обычным потребителям не обязательно знать о данных технологиях. Большинство приложений Win32 и UWP приложений будут сразу же работать в Windows 10X. При этом неважно, откуда вы устанавливаете приложение - из Магазина Microsoft, Интернета или с USB-накопителя.

Разработчики самостоятельно могут выбирать архитектуру своих продуктов: Win32, прогрессивные веб-приложения или UWP. По понятным причинам UWP-приложения лучше всего оптимизированы для Windows 10X, но Microsoft приложила много усилий, чтобы классические настольные приложения корректно работали в новой системе.

Контейнеры позволяют оптимизировать энергопотребление и производительность

Контейнеры позволяют оптимизировать энергопотребление и производительность

UWP-платформа имеет наилучшую оптимизацию для Windows 10X. Это вполне логично, ведь UWP-приложения первоначально разрабатывались с учетом мобильной платформы Windows Phone (Windows Mobile). Такие приложения повышают безопасность и производительность, снижают энергопотребление и соблюдают меры энергосбережения операционной системы (переход и выход из спящего режима).

Приложения Win32 создавались преимущественно для настольных компьютеров. Им недостает мобильной оптимизации, как у UWP. Классические приложения, как правило, являются более функциональными, чем UWP, но хуже влияют на время автономной работы и скорость работы системы. В любом случае, даже в 2020 году приложения Win32 играют важную роль в современных компьютерных вычислениях.

  • Контейнеры Win32 и MSIX потребляют меньше ресурсов, когда окна не находятся в видимой области.
  • Приложения полностью приостанавливаются, когда нет открытых окон.

В свернутом состоянии приложения Win32 и MSIX не будут работать в фоновом режиме. Данная мера позволяет экономить системные ресурсы и заряд аккумулятора. И наоборот, когда приложения Win32 активно используется, они выделяют больше ресурсов для высокой производительности.

Существует два последствия такого поведения. Во-первых, классические приложения Win32 не смогут выполнять фоновые задачи. По крайней мере длительные задачи до приостановки контейнера. Во-вторых, приложения Win32 не смогут автоматически запускаться в Windows 10X. В Windows 10X нет системного трея, поэтому классические приложения не смогут непрерывно работать в фоновом режиме.

Примечательно, что Microsoft может позволить контролировать это поведение самому пользователю. В этом случае, контейнеры с Win32 приложениями смогут работать в фоне. Однако, окончательное решение еще не принято.

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

Все будет работать корректно

Все будет работать корректно

Интересно, что контейнеризация приложений Win32 не скажется на их функциональных возможностях. Microsoft заявляет, что эти классические приложения получат полный доступ к следующим компонентам:

  • Мышь, клавиатуры, стилус, сенсорный ввод
  • Графика DirectX, аудиоустройства и медиа устройства
  • Сеть
  • Печать

Это означает, что старая модель «Plug and Play» сохранится, и на Surface Neo можно будет использовать все, что вы к нему подключите, включая внешние мониторы и периферийные устройства.

Уровень безопасности будет повышен, потому что пользователь сможет запрещать классических приложениям доступ к камере, микрофону и даже к данным местоположения. Для приложений UWP уже реализована такая функция - пользователь может самостоятельно выдавать разрешения для отдельных приложений. В Windows 10X при желании пользователи смогут отозвать разрешения для всех приложений Win32 на уровне контейнера.

Так как в Windows 10 отсутствует системный трей, то классические приложения не смогут его использовать, что, тем не менее, не должно привести к проблемам стабильности. Microsoft сообщает, что Win32 приложения cмогут работать «как есть» (то есть без изменений в реестре), но из-за контейнеризации программные вызовы никогда не коснутся ОС. Компания заявляет, что ограничения, наложенных контейнером Win32, не должны приводить к сбоям.

Два Проводника

Два Проводника

Двойственная природа Windows 10X выражается не только в совместной работе UWP и Win32 приложений, но и в использовании двух файловых менеджеров, в том числе при обращении к команде «Сохранить как» .

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

Однако, при вызове диалогового окна работы с файлами в UWP-приложениях или в самой системе Windows 10X откроется «современный» Проводник Windows (Modern File Explorer), который ограничен необходимыми библиотеками, такими как Видео, Музыка, Избранное, Документы, Изображения и др.

Это значит, что пользователи получают базовый уровень доступа к основным системным библиотекам, но не смогут обращаться к основной файловой структуре на уровне ОС, как в любой настольной системе Windows. Опять же, приложения Win32 будут корректно работать без какого-либо изменения кода.

Приложения запускаются в развернутом режиме

Приложения запускаются в развернутом режиме

Корпоративный вице-президент Microsoft Developer Platform, Кевин Галло (Kevin Gallo) рассказал, что в настоящее время все приложения в Windows 10X работают в полноэкранном режиме (т.е. развернуты на весь экран). Это похоже на то, как приложения запускаются в Windows 8 или в планшетном режиме в Windows 10.

Причиной такого выбора является размер экрана: чем меньше дисплей, тем больше «плотность» отображаемой информации. Запуск пяти приложений с маленькими окнами на одном 9-дюймовом дисплее вряд ли будет популярным сценарием.

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

Итог: Windows 10X является технически сложной системой, но простой для пользователя

Microsoft спроектировала Windows 10X таким образом, чтобы она была нейтральной для приложений, независимо от архитектуры: Electron, UWP, Win32, WinForms, WPF. Все эти приложения уверенно запустятся на Windows 10X без существенных изменений в коде.

По сравнению с обычной Windows 10 Microsoft изменила не только дизайн, но и основный приоритет:

  • Windows 10 Домашняя / Pro: создана для приложений Win32, но также может работать с UWP.
  • Windows 10X: создана для UWP приложений, но также может работать с Win32.

Конечно, это условная классификация, но Windows 10X построена так, чтобы быть быстрой, гибкой, мобильной и безопасной. Уже известно, что обновление ОС должно занимать не более 90 секунд. Данное преимущество связано с тем, что Windows 10X построена на замкнутой и ограниченной природе UWP, как и HoloLens.

В любом случае, владельцы Surface Neo смогут устанавливать любое приложение по желанию, и ожидаемое поведение будет соблюдено. У разработчиков также не нужно вносить существенные изменения в свои продукты.

Галло подчеркивает, что приложения, оптимизированные для работы с двумя экранами, также должны обеспечивать лучшее взаимодействие с настольными системами Windows 10. Это яркий пример преемственности Windows 10X и Windows 10.

Windows 10X является технически сложной системой, но простой для пользователя

Как все будет работать на практике, пока неизвестно. Microsoft утверждает, что разница в производительности между приложениями Win32 и UWP в Windows 10X не должна быть заметна для пользователей. Мы вступаем в новую эру мобильных ПК, где пользователям не придется идти на компромиссы.

Примечание: Большая часть данной информации основана на демонстрационном видео «How Windows 10X runs UWP and Win32 apps» показанном на Microsoft 365 Developer Day.

Чтобы программы могли корректно взаимодействовать с операционной системой, для этих программ нужна SDK, по которой они будут работать. UWP решает эту задачу, а также решает множество других проблем Windows.

Что сейчас в Windows?

В Windows сейчас хаос. Приложения можно писать на нескольких фреймворках:

По сути Win32Api не является фреймворком, а приложения написаны на "неуправляемом" коде, с максимально близким доступом к ОС. Win32Api это лишь набор функций + обертка для точки входа в приложение.

Приложения .Net Framework уже работают по другому принципу, запускаясь в своей "виртуальной машине". К сожалению, такие приложения платформозависимые.

UWP приложения пошли дальше. Кроме расширенного SDK, с доступом к магазину Windows, такие приложения теоретически могут работать на всех платформах Windows и на архитектурах, как x86, так и ARM.

Что хотят в Microsoft?


По моему мнению, Microsoft проспала момент с продажей и рекламой приложений через интернет, но конкуренты в лице Apple и Google не дремлют. У macOS есть удобный магазин, такой же магазин есть и у Google Android. Представьте, если бы вам пришлось приложения для смартфона искать по разным сайтам. Удобно ли это? Вряд ли.

Microsoft хотят сделать тоже самое. Дать возможность людям скачивать приложения прямо из магазина Windows.

Но почему бы не сделать это для всех старых приложений? Я не знаю. Я думаю, все эти приложения не поддаются какому-либо контролю, имеют сотни инсталляторов и пишут свои файлы во все места ОС. С UWP все эти проблемы решаются. Хотя они могли бы попытаться это сделать. Тогда была бы полная победа Windows.

Правда Microsoft делают это крайне медленно. Даже в Windows 10 большая часть приложений не являются UWP. А те приложения, которые являются UWP, выглядят немного чужеродно. Все знают про две панели управления, два калькулятора и так далее.

Microsoft своими вялыми действиями не подталкивают серьезных разработчиков к созданию UWP приложений или портированию уже существующих. Результаты бездействия мы можем наблюдать в магазине:


В магазине Windows 10 в основном представлен один "шлак". Серьезные компании не стремятся переводить свои продукты на UWP.

Почему текущий подход к написанию приложений должен умереть?

1) Неконтролируемый доступ к железу.

UWP частично решает эту проблему, разграничивая права пользователей. Этот подход был полностью скопирован с Google Android и macOS/iPhone.

Настроить доступ к железу можно в Параметрах - Конфиденциальность. Правда это актуально только для UWP приложений:


Если система может ограничивать доступ приложения к определенным компонентам железа или операционной системы, то мы можем увидеть список разрешений:


Тут я побуду адвокатом Windows 10, которую часто обвиняют в шпионаже. Как мне кажется, Windows 10 наоборот, пытается защитить ваши данные, разграничивая права приложений. Хотя тут можно сказать, что они просто не хотят с этими данными делиться :)

И если вы установили приложение, а оно начнет рассылать СМСки, то уж сами виноваты. Магазин вас предупредил. Сейчас мы устанавливаем любое приложение Windows на свой страх и риск. Оно может собирать любые данные с компьютера, а мы даже не узнаем об этом. Но здесь Microsoft наступила на грабли, сделав пункт: разрешить полный доступ ко всем компонентам Windows. И разработчики ставят этот пункт, особо не разбираясь, что к чему. Например, этим страдает Telegram.

2) Приложения написаны с использованием разных технологий.

Что даст переход на UWP?

Переход на UWP даст более тесную интеграцию с системой, можно будет использовать уведомления на полную мощность, обмениваться данными между приложениями. Писать приложения под все платформы, при этом ядро приложения будет единым.


Человека далёкого от клиентской разработки на Windows все эти термины определённо путают. И даже среди MS-сообщества регулярно возникают споры жив UWP или мёртв. Причем главный вопрос в этом споре - а что же такое UWP?

Вот уже года 3 Microsoft проводит "рефакторинг" в своём "королевстве". Несколько устав видеть одни и те же споры в твиттере, и оставлять одни и те же комментарии на хабре, я решил расписать как же многочисленные UI-фреймворки MS соотносятся между собой. Кто из них больше мёртв. Возможно, кому-то это поможет в выборе технологии для будущего проекта.

Windows API и Windows Runtime

Прежде чем начать разбираться с UI-фреймворками стоит сначала опуститься на уровень ниже, впрочем, без особых подробностей. В современной винде 2 основных API для работы приложений. Windows API (обычно сокращается до Win32) и Windows Runtime (WinRT). При разработке первый был ориентирован на язык С, и активно развивался вплоть до выхода Windows 8. Я не имею в виду, что этот API объявлен устаревшим, но все новые функции системы уже разрабатывются для WinRT. Хотя некоторые так же бекпортируются и в Win32. Приложения, которые работают через Win32 и используют его модель приложений и сервисов Microsoft называет классическими.

WinRT - вещь немного более сложная. Это даже не API, а способ взаимодействия с ним. Из вики:

Помимо объектно-ориентированности, новый API имеет версионирование, больший контроль доступа к вызовам. Некоторые системные вызовы могут делать только приложения определённых разработчиков, некоторые доступны по специальному ключу. Некоторые сокрыты весьма условно: если приложение попало на комп, оно может ими пользоваться. Но вот в Microsoft Store могут и не пустить.

Application Models

Два вышеописанных системных API в данный момент подразумевают две разных модели жизненного цикла приложений. Классическая модель — приложению можно почти всё, оно может залезть почти куда угодно, читать что угодно, прятать окна и свою деятельность. С одной стороны — это позволяет делать различные удобные штуки вроде Punto Switcher, или сворачивание в трей по закрытию окна (вопреки ожиданиям, это не стандартное поведение в Windows). С другой стороны, это развязывает руки любым троянам.

И это было одной из причин, почему для приложений, работающих с WinRT, за основу была взята модель из мобильных платформ — изолированные приложения с контролируемым системой жизненным циклом. Другой из озвученных причин является большая энергоэффективность мобильного подхода. Всё же значительное количество ПК — ноутбуки. Вылилось это в повсеместные ограничения, привязку времени жизни приложения и времени жизни его основного окна (пока-пока сворачивание в трей). А также сильные ограничения работы в фоновом режиме. На размен давались различные фоновые задачи, контролируемые системой, и легальные способы интеграции в систему (системные контракты, такие как Share UI). В Microsoft посчитали, что за неполные 9 лет за счет таких интеграций появилось около 40 возможных точек входа в приложение. В какой-то момент даже появилась возможность делать консольные приложения, работающие поверх WinRT.

Стоит так же отметить, что эти две модели не изолируют Win32 и WinRT API друг от друга. В UWP приложения всё так же можно подключать Win32-библотеки, пока это не открывает путь за пределы песочницы. Из Win32 можно дергать WinRT API, но для большей его части надо получить AppIdentity, до недавнего времени это означало, что приложение придётся запаковать и оно станет чуть более изолированным.


И, пожалуй, именно тут надо вспомнить про UWP (Universal Windows Platform). Технически это название для реализации Windows Runtime в Windows 10+. Дело в том, что Windows Runtime в телефонах и Windows Runtime в Windows 8 отличались настолько, что для них нужно было делать отдельные сборки приложений (даже для одной архитектуры процессора). С появлением Windows 10, ОС и рантайм допилили до того состояния, когда 1 сборка приложения может запускаться и на телефоне (тогда они ещё были), и на ПК. Так же к этому списку добавились XBox, IoT, Hololens и Teams (большая интерактивная "маркерная доска")

На практике, под сокращением UWP часто понимают именно UWP-приложения.

UI-фреймворки

Наконец можно поговорить про UI-фреймворки. С Windows Forms и WPF многие знакомы. UI, работающий поверх Win32 API. Отличаются способом верстки UI (дизайнер или XAML) и способом отрисовки (GDI или DirectX). С появлением WinRT, эти фреймворки особо не развиваются, но из-за огромного количества легаси приложений, Microsoft вынуждена поддерживать их. Например, в последних выпусках десятки значительно улучшена поддержка HDPI для WinForms.

WinUI

WinUI достоин отдельного упоминания, так как он един в двух лицах.

WinUI 2.x — UI-библиотека для UWP-приложений, содержащая в себе новые, в том числе экспериментальные, контролы. А также, обеспечивающая совместимость со старыми версиями Windows 10 (аналог AndroidX)

WinUI 3.x — часть Windows App SDK. Фактически это и есть UI-фреймворк для UWP, только оторванный от жизненного цикла UWP-приложений.

Обе версии сейчас развиваются параллельно.

Project Reunion он же Windows App SDK

Собственно, посмотрев на это обилие фреймворков (ещё и ввязавшись зачем-то в ReactNative), и выслушав жалобы разработчиков, в мае 2020 Microsoft анонсировала объединение подходов. Разработчики Windows Forms и WPF хотят писать стильные/модные/молодёжные приложения, получить доступ к новому API (в том числе различным системным триггерам, которые бывают довольно удобны). UWP-разработчики хотят получить больший доступ к системе и более простые способы распространения приложения, так как сейчас мимо стора распространять приложение не просто.

Собственно, WinUI 3.x является частью решения. Берём графический фреймворк от UWP-приложений, насаживаем его на жизненный цикл классических приложений. И все счастливы.

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

Так жив ли больной?

UWP, как подсистема винды, никуда не денется в ближайшее время. Это всё ещё основной вектор развития API системы. Для UWP-приложений, которые нацелены только на десктоп, уже настало время планировать портирование на Windows App SDK. Недавно выпущенная версия 0.8 уже допускается в Microsoft Store. Если же приложение должно работать и на других платформах (Xbox, Hololens и т. д.), то тут придется ждать следующего года. Но рано или поздно, таки придется переехать на Windows App SDK.

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

Если писать новое приложение, то стоит оценить Windows App SDK в текущем его состоянии. И возможно писать на нём.

А как же MAUI?

MAUI — абстракция над нативными UI-фреймворками.


Собственно, на винде это будет абстракцией над WinUI. У Xamarin.Forms есть поддерживаемая сообществом реализация поверх WPF.

Аналогичным образом ReactNative for Windows так же является абстракцией поверх WinUI. На нем, кстати, написан магазин на Xbox.

Подытожим

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

WinUI — современный графический фреймворк для Windows

Windows App SDK — в перспективе, единый набор SDK для любых приложений на Windows, вне зависимости от языка, и с возможностью переключения между различными жизненными циклами приложений

Что такое Universal Windows Platform (UWP)?

341


Live Online Java

Универсальная платформа Windows (UWP) – это специальная платформа для создания приложений на Windows 10. Вы можете разрабатывать приложения для UWP с помощью всего одного набора API, одного пакета приложений и одного магазина для доступа ко всем устройствам Windows 10 – ПК, планшета, телефона, Xbox, HoloLens, Surface Hub и других. Легче поддерживать несколько размеров экрана, а также различные модели взаимодействия, будь то сенсор, мышь и клавиатура, игровой контроллер или ручка. В основе приложений UWP лежит идея, что пользователи хотят, чтобы их работа, их задачи были мобильными через ВСЕ устройства, чтобы можно было использовать любое устройство, наиболее удобное или производительное для конкретной задачи.


Live Online Java

В итоге вы можете потратить свое время на работу со знакомыми языками программирования, фреймворками и API-интерфейсами, все в одном проекте, и иметь тот же самый код, который работает на огромном диапазоне оборудования Windows из существующих сегодня. После того, как вы написали свое приложение UWP, вы можете опубликовать его в магазине на обозрение всего мира.

Итак, что такое UWP-приложение?

  • Существует общая среда API для всех устройств

Основа API-интерфейсов универсальной платформы Windows (UWP) одинакова для всех классов устройства Windows. Если ваше приложение использует только основные API-интерфейсы, оно будет запускаться на любом устройстве Windows 10, независимо от того, планируете ли вы использование настольного ПК, гарнитуры Xbox или наушников Mixed Reality.

Тема связана со специальностями:

  • Расширение SDK позволяет вашему приложению делать классные вещи на определенных типах устройств
  • Приложения упакованы с использованием формата упаковки .AppX и распространяются из магазина
  • Одно хранилище для всех устройств
  • Приложения поддерживают адаптивные элементы управления и ввода

Элементы пользовательского интерфейса используют эффективные пиксели, поэтому они могут отображать макет в зависимости от количества пикселей экрана, доступных на устройстве. И они хорошо работают с несколькими типами ввода, такими как клавиатура, мышь, сенсорный экран, ручка и контроллеры Xbox One. Если вам нужно дополнительно адаптировать свой пользовательский интерфейс к определенному размеру экрана или устройству, новые панели макетов и инструменты помогут вам в этом.

Используйте язык, который вы уже знаете

Видео курсы по схожей тематике:

UX/UI Design Стартовый

UX/UI Design Стартовый

UX/UI Design мобильных приложений

UX/UI Design мобильных приложений

Создаем игру типа “Pokémon Go“

Приложения UWP оживают в Windows

  • Живые фрагменты и экран блокировки отображают контекстно-зависимую и своевременную информацию.
  • Push-уведомления приносят сигналы в реальном времени, отправляя предупреждения вашему пользователю, когда это необходимо.
  • Центр действий – это место, где вы можете организовывать и отображать уведомления и контент, на которые пользователи должны обратить внимание.
  • Background - исполнение и триггеры оживляют ваше приложение, когда пользователю это нужно.
  • В вашем приложении могут использоваться голосовые и Bluetooth-устройства LE, чтобы помочь пользователям взаимодействовать с окружающим миром.
  • Поддержка богатых, цифровых чернил и инновационного набора.
  • Cortana добавляет индивидуальность вашему программному обеспечению.
  • XAML предоставляет вам инструменты для создания плавных анимированных пользовательских интерфейсов.

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

Монетизируйте ваше приложение

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

Бесплатные вебинары по схожей тематике:

Увлекательное путешествие в страну динамического программирования

Увлекательное путешествие в страну динамического программирования

Создание дизайна лендинга с Figma

Создание дизайна лендинга с Figma

Веб-дизайн с Figma. Легкий старт

Веб-дизайн с Figma. Легкий старт

  • Платная загрузка – это самый простой вариант. Просто назовите цену.
  • Система нескольких пробных попыток позволит пользователям оценить ваше приложение перед его покупкой. Это обеспечит более легкую конверсию, чем более традиционные варианты «freemium».
  • Используйте скидки для привлечения внимания к своим приложениям.
  • Также доступны покупки и реклама в приложении.

Как начать?

Более подробный обзор UWP читайте в официальном Руководстве по приложениям для универсальной платформы Windows. Затем ознакомьтесь с настройкой Get set up, чтобы загрузить инструменты, необходимые для начала создания приложений, и напишите свое первое приложение!

Читайте также: