Создание приложений для Windows: выбор технологии разработки
Эта статья содержит сведения, необходимые для начала создания приложений для среды рабочего стола Windows.
Windows предлагает широкий спектр возможностей для создания приложений, включая C++, .NET и другие новые технологии, такие как средства открытый код в WSL и Rust. При таком большом количестве вариантов выбора может быть трудно понять, с чего начать.
IDE
Visual Studio — это среда разработки для большинства разработчиков Windows, которая предоставляет различные отправные точки для различных типов приложений, каждое из которых имеет свои сильные стороны и типы проектов (вот краткое руководство по C#). Каждый тип приложения включает модель приложения, которая определяет жизненный цикл приложения, платформу пользовательского интерфейса по умолчанию и доступ к полному набору API для использования функций Windows.
Visual Studio Code является еще одним популярным инструментом с расширениями и поддержкой большого количества языков и средств разработки. Для языков, отличных от C# и C++, это отличное место для начала.
Языки и платформы
Многие приложения для Windows написаны с помощью WPF или Windows Forms и остаются жизнеспособными средствами и сегодня.
В будущем, если приложение будет работать только в Windows, мы рекомендуем изучить Windows App SDK и WinUI 3. Если вам нужно, чтобы ваше приложение было кроссплатформенным, рассмотрите вариант .NET MAUI, прогрессивное веб-приложение (PWA) или React Native для Windows. Есть много других доступных вариантов (вот список популярных вариантов), но выше приведены некоторые хорошие отправные точки.
Создание приложения WinUI 3
Библиотека пользовательского интерфейса Windows (WinUI) 3 — это последняя платформа пользовательского интерфейса для классических приложений Windows, включая управляемые приложения, использующие C# и .NET, а также собственные приложения, использующие C++ с API Win32. Он все еще находится в стадии очень активной разработки, поэтому, хотя он может быть не в состоянии удовлетворить все ваши потребности сегодня, он созреет с каждым выпуском.
Включая систему Fluent Design во все интерфейсы, элементы управления и стили, WinUI предоставляет единообразные, интуитивно понятные и доступные возможности на основе новейших шаблонов пользовательского интерфейса. WinUI 3 предоставляется в пакете SDK для приложений Windows . Пакет SDK для приложений для Windows включает единый набор API и инструментов, которые могут согласованно использоваться любым приложением Win32 на C++ или .NET на C# в различных целевых версиях ОС Windows.
Если вы уже установили необходимые средства разработчика, вы можете создать простой проект WinUI 3.
Варианты кросс-платформенной поддержки
WinUI также служит основой для кросс-платформенных технологий, обеспечивающих великолепные возможности Windows с использованием разных языков программирования. .NET MAUI и React Native для Windows используют возможности WinUI в Windows, а также позволяют выполнять в других операционных системах. Другой кроссплатформенный вариант, Прогрессивный веб-приложения (PWA), — это веб-сайты, которые работают как установленные, собственные приложения в Windows и других поддерживаемых платформах, при этом функционируют как обычные веб-сайты в браузерах.
Мультиплатформенный пользовательский интерфейс приложений .NET (MAUI) — это кросс-платформенная архитектура с открытым кодом для создания приложений Android, iOS, macOS и Windows, которые используют собственный пользовательский интерфейс и службы каждой платформы из единой базы кода .NET. Так как .NET MAUI ориентируется на использования собственных возможностей платформ, это решение использует WinUI 3 и пакет SDK для приложений Windows для реализации последних возможностей для пользователей в Windows. Благодаря этому приложения получают все необходимое с WinUI 3, а также возможность взаимодействовать с другими платформами.
.NET MAUI для Windows станет отличным выбором, если:
- Вы хотите сохранить как можно больший объем кода .NET в мобильных и классических приложениях.
- Вы хотите поставлять приложения на другие компьютерные и мобильные платформы, помимо Windows, с поддержкой собственных возможностей платформы.
- Вы хотите использовать C# и (или) XAML для создания кросс-платформенных приложений.
- Вы используете Blazor для веб-разработки и хотите включить все или одну часть этого решения в мобильное или классическое приложение.
Дополнительные сведения о .NET MAUI см. по следующим ссылкам:
Прогрессивные веб-приложения (PWA) предоставляют доступ к открытым веб-технологиям для обеспечения кроссплатформенного взаимодействия. PWA предоставляют пользователям интерфейс, похожий на приложения, который настраивается для их устройств. PWA — это веб-сайты, которые постепенно совершенствуются для работы как установленные собственные приложения на вспомогательных платформах (включая Windows), при этом функционируют как обычные веб-сайты в других браузерах.
При установке в Windows PWA такие же, как и другие приложения. Пример:
- PWA можно добавить в меню «Пуск».
- PWA можно закрепить на панели задач.
- PWA могут обрабатывать файлы.
- PWA могут выполняться при входе пользователя.
- PWA можно отправить в Microsoft Store, где миллионы пользователей Windows могут находить и легко устанавливать их вместе с другими приложениями Windows.
Дополнительные сведения о создании PWA см. по следующим ссылкам:
React Native — это платформа разработки, которая позволяет создавать кросс-платформенные приложения. React Native для Windows предоставляет поддержку React Native для пакетов SDK Windows 10 и Windows 11, позволяя использовать JavaScript для создания собственных приложений Windows для всех устройств, поддерживаемых Windows 10 и Windows 11, включая ПК, планшеты, трансформеры, Xbox, устройства смешанной реальности и т. д.
При использовании React Native для Windows вы пишете основную часть кода приложения или весь код на JavaScript или TypeScript, а платформа создает собственное приложение XAML UWP. Если приложению требуется вызывать API платформы, обычно это можно сделать с помощью одного из многих модулей сообщества или, если нужный модуль еще не существует, вы можете легко написать собственный.
Ниже приведены некоторые преимущества React Native для Windows:
- Вам нужно обеспечить максимально возможное совместное использование кода на разных платформах или у вас есть веб-свойства, с которыми требуется совместно использовать код.
- Высокая производительность разработки и оптимизированный внутренний цикл благодаря быстрому обновлению.
- Основные характеристики приложения (производительность, доступность, интернационализация) находятся на уровне характеристик собственного приложения UWP.
- У вас есть опыт работы с JavaScript или TypeScript, а также желание использовать эти языки.
- Вы хотели бы использовать библиотеки JavaScript в npmjs.com, а также многие собственные библиотеки.
- Приложение будет использовать характерные для платформы элементы управления, вид, анимацию и цвета, благодаря чему оно воспринимается естественно в Windows. Кроме того, при использовании приложений React Native для Windows не нужно идти на компромиссы в отношении набора API, которые они могут вызывать, так как платформа позволяет вызывать API платформы, а также писать собственные диспетчеры представлений и собственные модули.
- Большое и растущее сообщество, а также множество модулей сообщества.
Дополнительные сведения об использовании React Native для Windows см. по следующим ссылкам:
Другие типы приложений
Дополнительные сведения о типах приложений, которые можно выбрать, приведены на вкладках ниже.
Классические приложения Win32 (иногда называемые просто классическими приложениями) — это исходный тип собственных приложений Windows, которым требуется прямой доступ к Windows и оборудованию. Благодаря этому такой тип будет лучшим выбором, если требуется самый высокий уровень производительности и прямой доступ к системному оборудованию.
Использование API Win32 с C++ позволяет достичь наивысшего уровня производительности и эффективности благодаря повышению контроля над целевой платформой с помощью неуправляемого кода, что возможно в управляемой среде выполнения, такой как WinRT и .NET. Однако такой уровень контроля над исполнением приложения требует большей осмотрительности и внимания для правильного выполнения, и позволяет извлекать выгоду из производительности разработки для производительности среды.
Вот несколько основных особенностей интерфейса API Win32 и C++ предложений, позволяющих создавать высокопроизводительные приложения.
- Оптимизация на уровне оборудования, включающая тщательный контроль за выделением ресурсов, время существования объектов, макет данных, выравнивание, байтовую упаковку и многое другое.
- Доступ к наборам инструкций, ориентированных на производительность, например SSE и AVX, с помощью встроенных функций.
- Эффективное и строго типизированное универсальное программирование с помощью шаблонов.
- Эффективные и надежные контейнеры и алгоритмы.
- DirectX, в частности Direct3D и DirectCompute (обратите внимание, что UWP также предлагает межпрограммное взаимодействие с DirectX).
- Используйте C++/WinRT для создания современных классических приложений Win32 с эффективным доступом к интерфейсам API среды выполнения Windows (WinRT).
У вас также есть доступ к современным возможностям платформы Windows и API, предоставляемым пакетом SDK для приложений Windows. Дополнительные сведения см. в статье Модернизация классических приложений.
WPF — это надежная платформа для управляемых приложений Windows с доступом ко всем компонентам .NET или .NET Framework, в которой используется разметка XAML для отделения пользовательского интерфейса от кода. Эта платформа создана для классических приложений, для которых требуется расширенный пользовательский интерфейс, настройка стилей и сценарии с большим объемом графики. Навыки разработки WPF похожи на навыки разработки WinUI 3, поэтому миграция из WPF в приложения WinUI 3 проще, чем миграция с Windows Forms.
У вас также есть доступ к современным возможностям платформы Windows и API, предоставляемым пакетом SDK для приложений Windows. Дополнительные сведения см. в статье Модернизация классических приложений.
Windows Forms — это исходная платформа для управляемых приложений Windows с упрощенной моделью пользовательского интерфейса с доступом ко всем компонентам .NET или .NET Framework. Это позволяет разработчикам быстро приступить к созданию приложений, даже новичкам на платформе. Это платформа быстрой разработки приложений на основе форм с большой встроенной коллекцией визуальных и невизуальных элементов управления, поддерживающих перетаскивание. Windows Forms не использует XAML, поэтому при переносе приложения в WinUI 3 пользовательский интерфейс будет полностью переписан.
У вас также есть доступ к современным возможностям платформы Windows и API, предоставляемым пакетом SDK для приложений Windows. Дополнительные сведения см. в статье Модернизация классических приложений.
На универсальной платформе Windows (UWP) предоставляется система общих типов, интерфейсы API и модель приложений для всех устройств под управлением UWP. Вы можете не только использовать UWP для создания классических приложений для компьютеров под управлением Windows — UWP также является единственной платформой с поддержкой написания собственных универсальных приложений для выполнения на Xbox, HoloLens и в Surface Hub. Приложения UWP могут быть собственными или управляемыми.
UWP — это платформа с широкими возможностями настройки, которая использует разметку XAML для отделения пользовательского интерфейса (представления) от кода (бизнес-логики). UWP подходит для классических приложений, которым требуется расширенный пользовательский интерфейс, настройка стилей и сценарии с большим объемом графики. UWP также имеет встроенную поддержку Системы дизайна Fluent для работы с UX по умолчанию и обеспечивает доступ к API Windows Runtime (WinRT).
У вас не будет доступа к API, предоставляемым пакетом SDK для приложений Windows. Чтобы использовать пакет SDK для приложений Windows, потребуется перенести приложение UWP в WinUI 3. Дополнительные сведения см. в статье о переходе на SDK для приложений Windows.