Перейти к основному содержимому

Разработка приложений для Windows (Microsoft Learn)

Разработчику Архитектору Инженеру

Как работать с этим обзором​

Эта статья лучше всего работает как карта решений: сначала определяете стек, затем проверяете требования среды и только после этого переходите к публикации.
Если нужен быстрый практический старт, параллельно держите открытыми Windows Forms (WinForms), Справочник по WinForms — элементы UI, Первая форма WPF — XAML, стили и шаблоны, Справочник по WPF — элементы UI и Microsoft Store и публикация Windows-приложений.


Windows - отдельный стек десктоп-разработки​

Раздел Десктопные приложения описывает общую архитектуру окон, событий и стеков (Qt, Electron, Java и др.). Для Windows Microsoft выделяет отдельную платформу разработчика: два уровня SDK, рекомендуемый UI (WinUI 3), классические .NET-стеки и путь от настройки машины до публикации в Microsoft Store.

Официальный вход: Обзор платформы разработчиков Windows. Практический старт проекта: Начните здесь.

См. также: Архитектура десктопных приложений (в том числе что такое драйвер), Особенности разработки десктопных приложений, Платформа .NET — UI.


Два SDK — Windows SDK и Windows App SDK​

Windows SDKWindows App SDK
НазначениеЗаголовки, библиотеки и инструменты для прямого доступа к API ОССовременный слой поверх Windows SDK: WinUI, жизненный цикл, окна, уведомления
Привязка к ОСПривязан к версиям WindowsПоставляется через NuGet, обновляется чаще релизов ОС
Когда нуженНизкоуровневые API, DirectX, последние функции ОС, Win32/C++Новые приложения с Fluent UI, интеграция в WPF/WinForms

Документация: Windows SDK, Windows App SDK.

Любое Windows-приложение в итоге опирается на Windows SDK; Windows App SDK — рекомендуемый путь для современного UI и системных возможностей без ожидания обновления всей ОС. Поддерживается Windows 10 (1809) и новее.


DirectX — графический стек под WPF и игры​

DirectX — набор API Microsoft Windows для мультимедиа и графики — изначально создан, чтобы игры на Windows 95 получили прямой доступ к видеокарте, клавиатуре и звуку — тот же уровень контроля, что давала DOS, но в защищённой модели памяти. Сегодня DirectX используют и игры, и инженерное ПО, и desktop UI (WPF, WinUI).

Основные компоненты, полезные прикладному разработчику:

КомпонентНазначение
Direct3D (D3D)3D- и 2D-примитивы, шейдеры, аппаратное ускорение
Direct2Dдвумерная векторная графика
DirectWriteрендеринг текста (используется WPF)
DirectShowаудио/видео потоки
DXGIобмен буферами с монитором

Direct3D 11 (октябрь 2009, Windows 7) — ключевой слой между ОС, драйвером видеокарты и приложением. Он доступен и на Windows Vista через обновление платформы. WPF при отрисовке опирается на DirectX, а WinForms — на GDI+; поэтому сложная анимация и масштабирование на HiDPI в WPF обычно плавнее.

Для прикладного C#-разработчика Direct3D напрямую нужен редко (игры, CAD, кастомный рендер). Достаточно понимать цепочку: XAML → WPF/WinUI → DirectX → драйвер GPU. Низкоуровневый доступ — через Win32 + Windows SDK или обёртки вроде SharpDX / Vortice.Windows.

WinForms и DirectX

WinForms рисует через GDI+. Для встраивания 3D или игрового контента на форму используют хостинг (например, элемент WPF внутри WinForms) или библиотеки вроде OpenTK / SharpDX — см. 115.md.


Выбор платформы приложения​

Microsoft предлагает несколько "дорожек"; выбор зависит от того, новый ли проект, есть ли legacy и нужна ли кроссплатформенность.


WinUI 3 — рекомендуемый UI для новых Windows-приложений​

WinUI 3 — нативный UI на базе Windows App SDK и XAML (C# или C++), с оформлением Fluent Design. Если вы впервые пишете под Windows или начинаете проект с нуля — документация WinUI и старт WinUI — основная точка входа.

Особенности по сравнению с другими стеками (сводка Microsoft):

  • современный интерфейс и песочница AppContainer (в отличие от классических Win32/WPF/WinForms без контейнера);
  • нет визуального drag-and-drop дизайнера как у WinForms/WPF — UI чаще в XAML и коде;
  • только Windows (не кроссплатформа; для macOS/Linux смотрите .NET MAUI).

WPF​

Windows Presentation Foundation (WPF) — презентационная подсистема .NET (с версии 3.0, 2006) для клиентских Windows-приложений с богатым визуальным взаимодействием. Разметка интерфейса пишется на XAML; логика — на любом .NET-языке (чаще C#).

Ключевые отличия от WinForms:

WinFormsWPF
ОтрисовкаGDI / GDI+ через HWND-контролыDirectX (аппаратное ускорение)
Единица графикипиксели экранааппаратно-независимый пиксель (1/96 дюйма) — масштаб без "лесенки"
Разметкаконструктор форм + кодXAML + разделение дизайна и кода
Кастомный UIowner-draw, ограниченноStyle, ControlTemplate, DataTemplate, анимация

WPF изначально поставлялся с Windows Vista (.NET 3.0) и далее входил в состав .NET Framework на Windows 7–10. Сейчас WPF — часть современного .NET (net*-windows); поддерживает автономные приложения и сценарии в браузере (XBAP — legacy).

Возможности WPF, которые редко нужны в WinForms:

  • Привязка данных — Binding, MultiBinding, TemplateBinding, PriorityBinding; связь UI с ViewModel прямо в разметке.
  • Стили и шаблоны — единое оформление контролов и карточек списков без дублирования кода.
  • 2D/3D-графика — векторные фигуры, эффекты, встроенная анимация; GPU снимает часть нагрузки с CPU.
  • Ресурсы — иерархия ResourceDictionary от контрола до Application.

WPF на Microsoft Learn — официальный обзор. Существующие WPF-приложения можно модернизировать через Windows App SDK (WPF + Windows App SDK). Пошаговый практикум — Первая форма WPF — XAML, стили и шаблоны. Клиент-серверный маршрут (MVVM, ASP.NET Core, Prism) — Практикум WPF и клиент-сервер.


Windows Forms​

Windows Forms — быстрые формы с визуальным конструктором; см. обзор WinForms. Модернизация через WinForms + Windows App SDK.


Win32 (C++)​

Прямой доступ к Windows и оборудованию; максимальная производительность, DirectX, низкоуровневые сценарии. Старт: Win32 desktop programming, современные обёртки — C++/WinRT.


UWP​

Universal Windows Platform (UWP) — платформа Microsoft, представленная в Windows 10, для универсальных приложений — один код запускается на ПК, планшете, смартфоне (Windows 10 Mobile), Xbox One и IoT-устройствах без переписывания под каждую форму-фактор. UWP — расширение Windows Runtime (WinRT), появившегося в Windows 8; API реализован на C++ и доступен из C++, C#, VB.NET, F# и JavaScript.

Разработка велась в Visual Studio 2015–2019; приложения распространялись через Microsoft Store с песочницей AppContainer — ограниченный доступ к файловой системе и API в обмен на безопасность и единый магазин. UWP использует XAML для UI (как WPF, но другой набор типов и xmlns).

UWPWinUI 3 / Windows App SDK
Привязан к версии Windows и StoreNuGet-пакет, обновляется чаще ОС
Metro/Fluent UI первого поколенияFluent Design, современные контролы
Новые проекты — legacyРекомендуемый путь для новых Windows-приложений

UWP-приложения не запускаются на Windows 7 и ниже. Существующие UWP продолжают работать; для новых проектов Microsoft рекомендует WinUI 3 и стратегию миграции на Windows App SDK.


Кроссплатформа​

.NET MAUI и React Native перечислены в сравнении платформ как кроссплатформенные варианты с поддержкой Windows среди других ОС.


Сравнение стеков​

Полная таблица — на странице обзора. Упрощённо для выбора:

ЗадачаКуда смотреть
Новое приложение только для Windows 10/11WinUI 3
Большой legacy на .NET, XAML уже естьWPF + при необходимости Windows App SDK
Быстрый внутренний CRUD, конструктор формWinForms → Windows Forms (WinForms)
Игра, драйвер, максимум производительности C++Win32 + Windows SDK
Один код Windows + macOS + mobile.NET MAUI
Веб-команда, HTML UIElectron → Electron

Среда разработки​

Перед первым проектом имеет смысл настроить рабочую станцию по руководству Set up your development environment:

  • Visual Studio 2022 с workload "Разработка классических приложений .NET" и/или "Разработка приложений для Windows" (WinUI, C++);
  • Windows SDK и при необходимости Windows App SDK (часто подтягиваются с проектом);
  • .NET SDK для WinForms, WPF, MAUI;
  • опционально WinGet и конфигурация окружения — см. вкладку winget в Start here.

Подробнее про IDE: Visual Studio — установка и workloads.


Поддержка и жизненный цикл​

Версии Windows, SDK и фреймворков имеют политику поддержки. Актуальные сроки и рекомендации — в разделе Support for app development: какие версии Windows целевые, когда прекращается поддержка конкретных пакетов, как планировать обновления приложения.



Драйверы (обзор для прикладного разработчика)​

Десктоп-приложение обращается к принтеру, камере, диску через API ОС, а не напрямую к регистрам устройства. Между приложением и железом работают драйверы — см. Что такое драйвер? и вводную в Архитектуре десктопных приложений.

Если вы не пишете драйвер, достаточно знать:

  • запросы идут через стек драйверов (фильтры, function driver, bus driver);
  • сбой драйвера может вызвать нестабильность системы (в отличие от падения одного user-mode процесса);
  • разработка драйверов — отдельная дисциплина: Windows drivers, Getting started with drivers.

Прикладной код (WinUI, WPF, WinForms) остаётся в пользовательском режиме; к драйверам обычно не обращаются, кроме специализированных утилит и SDK производителя оборудования.


Публикация и Microsoft Store​

Упаковка MSIX, учётная запись в Partner Center, сертификация и листинг — в отдельной статье Microsoft Store и публикация Windows-приложений. Старт в документации: Начало работы с Microsoft Store.


Карта документации Microsoft Learn​

ТемаСсылка
Обзор платформыget-started
Первый проектstart-here
Windows SDKwindows-sdk
WinUI 3winui3
WPFwpf/overview
Среда разработкиdev-environment
Поддержкаdevelop/support
Драйверы — что этоwhat-is-a-driver
Драйверы — разделwindows-hardware/drivers
Публикация в Storepublish/get-started

Частые ошибки​

СимптомПричина
WinUI не собираетсяНет Windows App SDK workload в VS
Путаница SDKWindows SDK ≠ Windows App SDK — см. таблицу выше
WPF на ARMПроверьте supported runtime в документации
Store отклонил пакетНе MSIX или неверная подпись — Microsoft Store и публикация Windows-приложений

Что попробовать​

  1. Шаблон "WinUI 3 Blank App" в Visual Studio — один экран.
  2. Сравните с WinForms на той же машине.
  3. MAUI — если нужен и Android.

Что читать дальше в энциклопедии​

  1. Первая форма WPF — XAML, стили и шаблоны — практикум с нуля; элементы UI.
  2. Windows Forms (WinForms) — быстрый .NET UI с конструктором; элементы UI.
  3. Microsoft Store и публикация — когда приложение готово к распространению.
  4. Особенности разработки десктопных приложений — многопоточность UI, DevOps, тестирование.
  5. Архитектура десктопных приложений — общая теория окон и элементов.
  6. Платформа .NET — язык и runtime под WPF/WinForms/MAUI; UI-фреймворки.

Практический алгоритм выбора стека под Windows​

  1. Зафиксируйте срок жизни продукта: пилот на 6 месяцев или платформа на 5+ лет.
  2. Определите требования UI — стандартные формы, сложные анимации, кастомный дизайн.
  3. Проверьте ограничения среды — Store, корпоративные политики, офлайн-режим.
  4. Сверьте экспертизу команды — C# и XAML, C++ и Win32, веб-стек.
  5. Запустите по одному прототипу на 2 кандидатах и сравните время реализации одинакового сценария.

Минимальный pilot checklist​

  • Окно приложения, навигация и базовая форма данных.
  • Асинхронная загрузка данных без блокировки UI.
  • Сборка и установка на чистой машине.
  • Логирование и обработка ошибок при потере сети.
  • Черновой сценарий обновления версии.

Этот набор дает объективное сравнение WinUI, WPF, WinForms или Electron до начала большого проекта.


Связанные материалы​


Как провести техническое сравнение стеков​

Минимальный формат архитектурного эксперимента​

  1. Выберите единый пользовательский сценарий для всех кандидатов.
  2. Реализуйте одинаковый объем функциональности на WinUI, WPF или WinForms.
  3. Замерьте время разработки, скорость UI, размер пакета и удобство поддержки.
  4. Сведите результаты в таблицу с критериями бизнеса и эксплуатации.

Решение после эксперимента​

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