共用方式為


架構選項概觀

本文包含開始建置 Windows 應用程式所需的資訊。

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

WinUI

.

建議使用 WinUI 和 Windows App 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,請參閱特定架構的指南

WPF

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

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

如果您有 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現代化桌面應用程式

跨平台選項

如果您需要您的應用程式跨平臺,請考慮 .NET MAUI漸進式 Web 應用程式 (PWA)React Native for Desktop。 還有其他許多可用選項 (以下是熱門選項清單),但這些仍是一些不錯的起點。

.NET MAUI 可利用 Windows 上 WinUI 的強大功能,同時在其他作業系統上啟用執行。 React Native for Desktop 可讓您撰寫在 Windows 10 和 Windows 11 支援的所有裝置上執行的應用程式(不只是計算機)。 另一個跨平台選項漸進式 Web 應用程式 (PWA),是像在 Windows 和其他支援平台上安裝原生應用程式一樣運作的網站,同時像瀏覽器上的一般網站一樣運作。

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

.NET 多平台應用程式 UI (MAUI) 是開放原始碼的跨平台架構,可用來組建 Android、iOS、macOS 和 Windows 應用程式,以從單一 .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 (RNW) 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/Code Razor JSX XAML 代碼 代碼 XAML XAML
UI 設計工具
(拖放)
UI 偵錯 熱重新載入 熱重新載入 快速重新整理 熱重新載入 - 熱重新載入 熱重新載入 熱重新載入
Fluent Design ✅ (透過 WinUI 2)
.NET .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

深入了解下列每個選項:

下一步