共用方式為


選擇你的應用程式框架

本文包含你開始為 Windows 開發應用程式,並選擇適合你技能與情境的 UI 框架所需的資訊。

Windows 提供各種語言、架構和工具來建置應用程式,包括 WinUI、React Native for Desktop、WPF、C++、C#、.NET,以及各種跨平台架構。 本文中的資訊可幫助您決定哪個選項最適合您。

WinUI

WinUI 標誌。

使用 WinUI 和 Windows 應用程式 SDK 來建立外觀精美的應用程式,並利用最新的 Windows 版本。 如果您剛接觸 Windows 開發,或剛開始開發新的 Windows 應用程式,WinUI 可提供您所需的資源,來建立出色的 Windows 11 應用程式

WinUI 是一個 XAML 標記型使用者介面層,其中包含用於建立 Windows 應用程式的新式控制項和樣式。 作為 Windows App SDK 的原生 UI 層,它體現了 Fluent Design,為每個 Windows 應用程式提供了客戶所期望的精緻感。

注意

Windows 應用程式 SDK 是一組新的開發人員元件和工具,其代表的是 Windows 應用程式開發平台的最新技術。 Windows 應用程式 SDK 提供一組統一的 API 和開發工具,讓在 Windows 11 和向下相容至 Windows 10 版本 1809 的桌面應用程式,可以以一致的方式使用。

雖然 WinUI 是原生 UI 層,但您可以將 Windows App SDK 與 WPF、WinForms 或 Win32 應用程式搭配使用。 如果您先前開發了適用於 Windows 的應用程式,但想要在現有的應用程式中開始使用 Windows 應用程式 SDK,請參閱 架構特定指南

React Native 桌面版

React Native 是一個開發平台,可以建立跨平台應用程式。 React Native for Desktop 包括適用於 Windows 和 macOS 的 React Native,為 Windows SDK 帶來 React Native 支援。 React Native for Desktop 可讓您使用 JavaScript 為 Windows 10 和 Windows 11 支援的所有裝置建置原生 Windows 應用程式。 此支援包括電腦、平板電腦、二合一電腦、Xbox、混合實境裝置等。

使用 React Native 桌面版,您可以用 JavaScript 或 TypeScript 編寫大部分或全部應用程式程式碼。 架構會產生原生 UWP XAML 應用程式。 如果您的應用程式需要呼叫平台 API,您通常可以透過眾多 社群模組之一來執行此操作。 如果模組尚不存在,您可以輕鬆 編寫原生模組來公開它

以下是選擇 React Native for Desktop 的一些原因:

  • 您想要盡可能跨平台共用程式碼,或者您有想要共用程式碼的 Web 屬性。
  • 改善開發人員生產力和內部迴圈,這要歸功於其快速重新整理的能力。
  • 您的應用程式的基本功能 (效能、協助工具、國際化) 和原生 UWP 應用程式一樣好。
  • 您有 JavaScript 或 TypeScript 的經驗和偏好。
  • 您想在 npmjs.com 上利用僅限 JavaScript 的函式庫,以及許多原生函式庫。
  • 您的應用程式會使用原生控制項、視覺外觀、動畫和色彩,因此感覺會整合到 Windows 中使用的設計語言中。 此外,適用於桌面應用程式的 React Native 不必在可以呼叫的 API 集上做出妥協。 該框架允許您調用平台 API 以及編寫自己的視圖管理器和本機模塊。
  • 龐大且日益成長的社群潛能,擁有眾多社群模組

如需 React Native for Desktop 的詳細資訊,請參閱下列連結:

WPF

WPF 是一個成熟的 Windows 桌面應用程式架構,可以存取 .NET.NET Framework。 與 WinUI 一樣,它也會使用 XAML 標記將 UI 與程式碼分開。 WPF 提供一組完整的應用程式開發功能,包括控制項、資料繫結、版面配置、2D 和 3D 圖形、動畫、樣式、範本、文件、媒體、文字,以及印刷樣式。 WPF 是 .NET 的一部分,因此您可以建置能納入 .NET API 其他元素的應用程式。

此外,您現在可以將沙箱環境整合到封裝的 WPF 應用程式中,從而提供額外的安全層。 有了新的 Win32 應用程式隔離安全性功能,這項增強功能幾乎不需要變更您的程式碼。

提示

如果您已經投資了 WPF,您可以繼續使用它並利用 .NET 9 中的現代化選項。 您可以建置應用程式,瞭解Microsoft繼續投資 WPF。 如需詳細資訊,請參閱 Windows 開發人員常見問題

如果您有 WPF .NET 應用程式,您也可以存取 Windows 應用程式 SDK 所提供的新式 Windows 平台功能和 API。 有關詳細信息,請參閱在 WPF 應用程式中使用 Windows 應用程式 SDK現代化桌面應用程式

提示

如果您需要更多協助來確定哪個架構最適合您的應用程式,請參閱為 Windows 開發專案選擇最佳應用程式架構訓練單元。

其他原生平台選項

許多 Windows 應用程式都是使用 Win32Windows FormsUWP 編寫的。 這些架構中的每一個都受到支援,並繼續接收錯誤、可靠性和安全性修正,但新功能和樣式的投資程度不同。 如需這些應用程式類型的詳細資訊,請參閱下列索引標籤。

Win32 桌面應用程式 (有時也稱為傳統型桌面應用程式) 是需要直接存取 Windows 和硬體的原生 Windows 應用程式的原始應用程式類型。 此存取權會讓 Win32 成為需要最高效能層級和直接存取系統硬體的應用程式的應用程式類型。

透過將 Win32 API 與 C++ 搭配使用,您可以實現最高等級的效能和效率。 您使用非受控代碼可以對目標平臺獲得更大的控制權,這比在 WinRT 和 .NET 這樣的受控運行環境中所可能的要多。 不過,對於應用程式執行進行這種層級的控制,需要更加小心謹慎以免出錯,導致開發生產力雖然提高,但執行階段效能卻降低。

以下是 Win32 API 和 C++ 提供的一些重點,可讓您建置高效能應用程式。

  • 硬體層級的最佳化,包括嚴格控制資源配置、物件存留期、資料配置、對齊、位元組封裝等。
  • 透過內建函式存取效能導向的指令集 (例如 SSE 和 AVX)。
  • 使用範本進行有效率的型別安全泛型程式設計。
  • 有效率且安全的容器和演算法。
  • DirectX,特別是 Direct3D 和 DirectCompute。
  • 使用 C++/WinRT 建立具有 Windows 執行階段 (WinRT) API 一級存取權的現代桌面 Win32 應用程式。

此外,您現在可以將沙箱環境整合到 Win32 應用程式中,從而提供額外的安全層。 有了新的 Win32 應用程式隔離安全性功能,這項增強功能幾乎不需要變更您的程式碼。

您也可以存取 Windows 應用程式 SDK 所提供的現代 Windows 平台功能和 API。 有關詳細資訊,請參閱在現有專案中使用 Windows 應用程式 SDK現代化桌面應用程式

其他跨平台選項

如果您需要跨平臺的應用程式,除了桌面版 React Native 之外,請考慮 .NET MAUI、Blazor Hybrid漸進式 Web 應用程式 (PWA)。 還有許多其他選擇可用(這裡是流行選項的列表),但這些選項是很好的起點。

.NET MAUI 可利用 Windows 上 WinUI 的強大功能,同時在其他作業系統上啟用執行。 Blazor 混合式會將桌面和行動原生用戶端架構與 .NET 和 Blazor 混合。 另一個跨平台選項漸進式 Web 應用程式 (PWA),是像在 Windows 和其他支援平台上安裝原生應用程式一樣運作的網站,同時像瀏覽器上的一般網站一樣運作。

如需詳細資訊,請參閱下索引標籤。

.NET 多平臺應用程式 UI (MAUI) 是開放原始碼、跨平臺架構,可用來建置 Android、iOS、macOS 和 Windows 應用程式。 使用 .NET MAUI,您可以從單一 .NET 程式碼基底利用每個平臺的原生 UI 和服務。 因為 .NET MAUI 偏好平台原生體驗,所以其會使用 WinUI 和 Windows 應用程式 SDK,讓應用程式在 Windows 上取得最新的使用者體驗。 這種方法可讓您的應用程式存取您透過 WinUI 獲得的所有內容,並能夠存取其他平台。

如果您符合下列條件,適用於 Windows 的 .NET MAUI 是絕佳的選擇:

  • 想要在行動和桌面應用程式之間共用盡可能多的 .NET 程式碼。
  • 想要將您的應用程式從 Windows 傳遞至具有原生平臺體驗的其他桌面和行動目標。
  • 想要使用 C# 和/或 XAML 來建置跨平臺應用程式。
  • 正在使用 Blazor 進行 Web 開發,並希望將全部或部分包含在行動或桌面應用程式中。

如需 .NET MAUI 的詳細資訊,請參閱下列連結:

應用程式開發架構功能比較

您有許多選項可用於開發適用於 Windows 的應用程式。 最適合您的選擇,取決於您的應用程式要求、您的現有程式碼,以及您對技術的熟悉程度。 下表列出 Windows 上最受歡迎的應用程式開發架構,以及每個架構所支援的功能。

功能 .NET MAUI Blazor 混合式 React Native 桌面版 UWP XAML (Windows.UI.Xaml) Win32 (MFC 或 ATL) Windows Forms WinUI 3 WPF
語言 C# C# JavaScript、TypeScript C#、C++、Visual Basic C++、Rust C#、Visual Basic C#、C++ C#、Visual Basic
UI 語言 XAML/程式碼 Razor JSX XAML Code Code XAML XAML
UI 設計工具
(拖放)
不支援 不支援 不支援 支援 不支援 支援 不支援 支援
UI 偵錯 熱重新載入 熱重新載入 快速重新整理 熱重新載入 - 熱重新載入 熱重新載入 熱重新載入
Fluent 設計 支援 支援 支援 支援 (透過 WinUI 2 不支援 不支援 支援 不支援
。網 .NET .NET N/A .NET Core 與 .NET Native N/A .NET 與 .NET Framework .NET .NET 與 .NET Framework
Windows 應用程式 ADK (機器翻譯) 支援詳細資訊 透過MAUI支援 支援詳細資訊 不支援 支援 支援詳細資訊 支援 支援詳細資訊
非常適合觸控 支援 支援 支援 支援 不支援 不支援 支援 不支援
跨平台 支援 支援 支援 不支援 不支援 不支援 不支援 不支援
Xbox/HoloLens 應用程式 不支援 不支援 支援 支援 不支援 不支援 不支援 不支援
沙箱作業 (AppContainer) 不支援 不支援 支援 支援 不支援 不支援 不支援 不支援
目前支援 支援 支援 支援 支援 支援 支援 支援 支援
接收更新 支援 支援 支援 支援 (安全性和錯誤修復) 支援 支援 支援 支援
藍圖 GitHub GitHub GitHub n/a n/a GitHub GitHub GitHub

深入了解下列每個選項:

下一步