Почему Windows 10 UWP это будущее. Или зачем он нужен.
![](https://dimsog.ru/storage/app/uploads/public/620/547/543/thumb_209_700_400_0_0_crop.png)
Чтобы программы могли корректно взаимодействовать с операционной системой, для этих программ нужна SDK, по которой они будут работать. UWP решает эту задачу, а также решает множество других проблем Windows.
Что сейчас в Windows?
В Windows сейчас хаос. Приложения можно писать на нескольких фреймворках:
- Win32Api
- .Net
- .Net (UWP)
По сути Win32Api не является фреймворком, а приложения написаны на "неуправляемом" коде, с максимально близким доступом к ОС. Win32Api это лишь набор функций + обертка для точки входа в приложение.
Приложения .Net Framework уже работают по другому принципу, запускаясь в своей "виртуальной машине". К сожалению, такие приложения платформозависимые.
UWP приложения пошли дальше. Кроме расширенного SDK, с доступом к магазину Windows, такие приложения теоретически могут работать на всех платформах Windows и на архитектурах, как x86, так и ARM.
При этом нельзя просто взять и использовать все возможности UWP для старых .Net приложений. Их нужно перекомпилировать с использованием технологии Windows Bridge.
Что хотят в Microsoft?
По моему мнению, Microsoft проспала момент с продажей и рекламой приложений через интернет, но конкуренты в лице Apple и Google не дремлют. У macOS есть удобный магазин, такой же магазин есть и у Google Android. Представьте, если бы вам пришлось приложения для смартфона искать по разным сайтам. Удобно ли это? Вряд ли.
Microsoft хотят сделать тоже самое. Дать возможность людям скачивать приложения прямо из магазина Windows.
Но почему бы не сделать это для всех старых приложений? Я не знаю. Я думаю, все эти приложения не поддаются какому-либо контролю, имеют сотни инсталляторов и пишут свои файлы во все места ОС. С UWP все эти проблемы решаются. Хотя они могли бы попытаться это сделать. Тогда была бы полная победа Windows.
Правда Microsoft делают это крайне медленно. Даже в Windows 10 большая часть приложений не являются UWP. А те приложения, которые являются UWP, выглядят немного чужеродно. Все знают про две панели управления, два калькулятора и так далее.
Microsoft своими вялыми действиями не подталкивают серьезных разработчиков к созданию UWP приложений или портированию уже существующих. Результаты бездействия мы можем наблюдать в магазине:
В магазине Windows 10 в основном представлен один "шлак". Серьезные компании не стремятся переводить свои продукты на UWP.
Почему текущий подход к написанию приложений должен умереть?
1) Неконтролируемый доступ к железу.
Win32 и .Net приложения имеют неконтролируемый доступ к железу, в частности к Bluetooth, вебкамере, микрофону и другим приложениям. Вас могут записывать, а вы не узнаете про это. Да, эту проблему решают антивирусы. Но в нормальной системе их не должно быть. Операционная система сама должна уметь себя защищать.
UWP частично решает эту проблему, разграничивая права пользователей. Этот подход был полностью скопирован с Google Android и macOS/iPhone.
Настроить доступ к железу можно в Параметрах - Конфиденциальность. Правда это актуально только для UWP приложений:
Если система может ограничивать доступ приложения к определенным компонентам железа или операционной системы, то мы можем увидеть список разрешений:
Тут я побуду адвокатом Windows 10, которую часто обвиняют в шпионаже. Как мне кажется, Windows 10 наоборот, пытается защитить ваши данные, разграничивая права приложений. Хотя тут можно сказать, что они просто не хотят с этими данными делиться :)
И если вы установили приложение, а оно начнет рассылать СМСки, то уж сами виноваты. Магазин вас предупредил. Сейчас мы устанавливаем любое приложение Windows на свой страх и риск. Оно может собирать любые данные с компьютера, а мы даже не узнаем об этом. Но здесь Microsoft наступила на грабли, сделав пункт: разрешить полный доступ ко всем компонентам Windows. И разработчики ставят этот пункт, особо не разбираясь, что к чему. Например, этим страдает Telegram.
2) Приложения написаны с использованием разных технологий.
В нормальной системе приложения написаны с помощью единых инструментов. К примеру, для Android это Java + Android SDK. Нет, есть конечно ненормальные, которые пишут приложения на Qt / C# / HTML5 приложения для Android, но внутри они всё равно используют Android SDK. Без него никуда.
Microsoft хочет тоже самое. Они хотят получать единую платформу, единые инструменты разработчика. Ведь для этого практически всё есть: отличный язык программирования C# и отличная платформа .Net Framework.
Что даст переход на UWP?
Переход на UWP даст более тесную интеграцию с системой, можно будет использовать уведомления на полную мощность, обмениваться данными между приложениями. Писать приложения под все платформы, при этом ядро приложения будет единым.
В .Net Framework есть удобный Properties.Settings, все настройки приложения будут храниться в одном месте, не засоряя реестр. При удалении приложения, всё файлы удалит операционная система, а не сторонний инсталлятор.