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

Разработка приложений для 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, конструктор формWinFormsWindows Forms (WinForms)
Игра, драйвер, максимум производительности C++Win32 + Windows SDK
Один код Windows + macOS + mobile.NET MAUI
Веб-команда, HTML UIElectronElectron

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

Перед первым проектом имеет смысл настроить рабочую станцию по руководству 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, ограничения инфраструктуры и правила поставки в организации.