Windows App SDK — среда выполнения приложений Microsoft¶
Windows App SDK (ранее известная как Project Reunion) — это набор библиотек, инструментов и компонентов от Microsoft, предназначенных для унификации разработки приложений под платформу Windows. Он предоставляет единый слой API, позволяющий разработчикам использовать современные возможности Windows 10 и Windows 11 независимо от конкретной версии операционной системы и модели поставки приложения (MSIX-пакет или классическое Win32-приложение).
¶История и происхождение
До появления Windows App SDK разработчики приложений для Windows сталкивались с фрагментацией платформы. Возможности Windows разделялись между несколькими моделями: классические Win32-приложения, приложения UWP (Universal Windows Platform) и приложения, поставляемые через магазин Microsoft Store с использованием различных моделей пакетирования. Многие новые API были доступны только для UWP-приложений, что ограничивало их использование в традиционных настольных программах.
В мае 2020 года на конференции Microsoft Build проект получил название Project Reunion. Его цель состояла в том, чтобы «соединить» разрозненные экосистемы Windows и предоставить разработчикам доступ к современным возможностям независимо от типа приложения. В апреле 2021 года проект был переименован в Windows App SDK, что отразило его расширенную роль как универсального инструментария для настольной разработки.
Первая стабильная версия 1.0 была выпущена в ноябре 2021 года. Далее SDK развивалась в режиме регулярных релизов: версия 1.1 (май 2022), 1.2 (октябрь 2022), 1.3 (май 2023), 1.4 (октябрь 2023), 1.5 (март 2024) и более новые выпуски, добавлявшие новые API и улучшавшие производительность.
¶Состав и архитектура
Windows App SDK построена по модульному принципу и включает несколько ключевых компонентов:
- WinUI 3 — эволюция пользовательского интерфейса Windows, преемница UWP XAML и Fluent Design. Предоставляет современные элементы управления и визуальные эффекты для настольных приложений.
- MSIX — упаковка и развёртывание приложений через единый формат пакетов, обеспечивающий чистую установку и удаление без остатков в системе.
- Доступ к файлам и данным — унифицированные API для работы с файловой системой, включая песочницу приложений.
- Дерево окон и взаимодействие — современные API для управления окнами, включая поддержку нескольких мониторов с разным DPI и тему оформления приложения.
- Подсистема приложений — модульная система, позволяющая подключать к приложению только необходимые библиотеки.
Одной из ключевых особенностей является возможность использовать Windows App SDK как NuGet-пакеты в существующих проектах, что снижает порог входа для миграции.
¶Связь с .NET и C++
Windows App SDK тесно интегрирована с платформой .NET (начиная с .NET 6 и далее .NET 8/9) и поддерживает языки C#, C++/WinRT и Rust через проекты-обёртки. Для C#-разработчиков доступен шаблон проекта в Visual Studio, создающий приложение WinUI 3 «из коробки».
Для C++ разработчики используют C++/WinRT — стандартный заголовочный библиотечный слой для работы с WinRT-компонентами, что позволяет создавать высокопроизводительные приложения без упаковки в .NET.
¶Отличие от Windows Runtime (WinRT)
Стоит различать Windows App SDK и Windows Runtime (WinRT) — это разные сущности. WinRT — это низкоуровневая модель API-интерфейсов, представленная в Windows 8 и используемая в UWP. Windows App SDK построена поверх WinRT и расширяет её, добавляя новые компоненты и унифицируя доступ к возможностям для всех типов приложений.
¶Применение
Windows App SDK используется для разработки:
- Настольных приложений с современным интерфейсом (WinUI 3).
- Игр и мультимедийных приложений, требующих доступа к новым возможностям графики и ввода.
- Корпоративных приложений, которым требуется единая модель развёртывания через MSIX.
- Приложений, мигрирующих со старых Win32-программ на современный стек.
Microsoft позиционирует Windows App SDK как основу для будущего настольной разработки в экосистеме Windows, постепенно перенося на неё собственные приложения, такие как «Проводник» и «Фотографии».
¶Критика
Основные замечания разработчиков связаны с ранними версиями SDK: нестабильность API, недостаточная документация и проблемы с производительностью по сравнению с классическими Win32-приложениями. С течением времени эти проблемы постепенно устраняются, однако некоторые компоненты по-прежнему считаются «preview» и не рекомендуются для критически важных проектов.
¶Источники
- Официальная документация Microsoft Learn: Windows App SDK
- Блог Microsoft Windows Developer Blog
- Документация по WinUI 3 на Microsoft Learn
- Открытый репозиторий Windows App SDK на GitHub
