架構選項概觀
本文包含開始建置 Windows 應用程式所需的資訊。
Windows 提供各種語言、架構和工具來建置應用程式,包括 WinUI、React Native for Desktop、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,請參閱特定架構的指南。
React Native for Desktop
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 for Desktop 時,您會在 JavaScript 或 TypeScript 中撰寫大部分或所有應用程式程式代碼,而架構會產生原生 UWP XAML 應用程式。 如果您的應用程式需要呼叫平台 API,您通常可以透過許多 社群模組其中之一來執行,或者如果模組尚未存在,您可以輕鬆地撰寫原生模組來公開它。
以下是選擇 React Native for Desktop 的一些原因:
- 您想要盡可能跨平台共用程式碼,或者您有想要共用程式碼的 Web 屬性。
- 改善開發人員生產力和內部迴圈,這要歸功於其快速重新整理的能力。
- 您的應用程式的基本功能 (效能、協助工具、國際化) 和原生 UWP 應用程式一樣好。
- 您對 JavaScript 或 TypeScript 具有經驗和偏好
- 您想要在 npmjs.com 上利用僅限 JavaScript 的程式庫,以及許多原生程式庫。
- 您的應用程式會使用原生控制項、視覺外觀、動畫和色彩,因此會感覺與 Windows 中使用的設計語言融為一體。 此外,React Native for Desktop 應用程式不需要入侵他們可以呼叫的 API 集合,因為架構可讓您呼叫平臺 API,以及撰寫您自己的檢視管理員和原生模組。
- 龐大且日益成長的社群潛能,擁有眾多社群模組。
如需 React Native for Desktop 的詳細資訊,請參閱下列連結:
- GitHub 上適用於 Windows 的 React Native 存放庫
- GitHub 上的 React Native for macOS 存放庫
- 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。 如需詳細資訊, 請參閱用戶端應用程式開發架構常見問題 。
如果您有 WPF .NET 應用程式,您也可以存取 Windows 應用程式 SDK 所提供的新式 Windows 平台功能和 API。 有關詳細信息,請參閱在 WPF 應用程式中使用 Windows 應用程式 SDK 和現代化桌面應用程式。
提示
如果您需要更多協助來確定哪個架構最適合您的應用程式,請參閱為 Windows 開發專案選擇最佳應用程式架構訓練單元。
其他原生平台選項
許多 Windows 應用程式都是使用 Win32、Windows Forms 或 UWP 編寫的。 這些架構都可獲得支援,並將繼續收到錯誤、可靠性和安全性修復,但對新功能和樣式的投資等級不同。 如需這些應用程式類型的詳細資訊,請參閱以下表格:
- Win32
- Windows Forms \(英文\)
- UWP
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 for Desktop 之外,您也應該考慮 .NET MAUI 或漸進式 Web 應用程式 (PWA)。 還有其他許多可用選項 (以下是熱門選項清單),但這些仍是一些不錯的起點。
.NET MAUI 可利用 Windows 上 WinUI 的強大功能,同時在其他作業系統上啟用執行。 另一個跨平台選項漸進式 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 for Desktop | 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 |
深入了解下列每個選項:
- 用戶端應用程式開發架構常見問題
- .NET 多平台應用程式 UI (.NET MAUI)
- ASP.NET Core Blazor 混合式
- React Native for Desktop
- 通用 Windows 平台 (UWP)
- 在 ATL 和 MFC 之間選擇的建議
- Windows Forms
- Windows Presentation Foundation (WPF)
- Windows 應用程式 SDK 中的 WinUI (WinUI 3)
下一步
- 使用 WinUI 開始開發適用於 Windows 的應用程式
對於 Windows 應用程式,推薦使用 WinUI 作為平台,以下步驟將幫助您快速入門。
- 在 Windows 上設定您的開發環境
Windows 不僅適合用來開發在 Windows 上執行的應用程式,對於在其他平台開發應用程式也是很強大的環境。 深入了解可用來最大化開發的工具和選項。