共用方式為


Windows 應用程式開發 - 最佳做法

本文件中的最佳做法可協助您建置出色的 Windows 應用程式,觸達全世界約 15 億名不同的電腦使用者,為他們帶來滿意體驗。 本文件分成下列各節:

  1. 使用者體驗:本節中的指引可協助您改善應用程式的外觀、質感和易用性。
  2. 效能與基礎:本節中的指引可協助您改善應用程式的效能和資源使用率。
  3. 作業系統/硬體最佳化:本節中的指引可協助您最佳化各種硬體組態的封裝和散發。
  4. 應用程式探索和管理:本節中的指引可讓使用者更輕鬆地探索、安裝、更新及解除安裝您的應用程式。
  5. 無障礙性:本節中的指引可協助您建置無障礙和包容性的體驗。
  6. 安全性和隱私權:本節中的指引可協助您降低安全性風險,並滿足使用者的隱私權需求。

使用者體驗(UX)

Windows 11 標誌著 Windows 作業系統的視覺進化,改善了 Windows 的外觀、質感和易用性。 我們的研究表明,使用者對 Windows 應用程式有很高的期望:

  • 他們預期 Windows 應用程式可搭配使用種類齊全的輸入。
  • 他們預期今後裝置上的設計和互動模式都具有原生的外觀和質感。
  • 他們預期支援新式視窗化工作流程和殼層整合點。

若應用程式遵循 Windows 風格和標準的 Windows 行為時,使用者不需要重新學習互動模式。 這可讓使用者更輕鬆地使用您的應用程式。 應用程式的出色外觀可以產生良好的第一印象,但如果也容易使用且能協助使用者完成目標,將更能留下長久的優質印象。

Windows 11 是基於 Windows 11 設計原則建構而成。 建置應用程式時遵循這些指導方針,可協助您符合客戶對絕佳應用程式體驗的期望。 若考慮在 Windows 應用程式納入最新和建議的 Windows 應用程式 UI/UX 模式,建議您專注於下列 5 個領域:

  • 版面配置
  • 互動
  • 視覺化風格
  • 視窗行為
  • 殼層整合點

WinUI 3 透過其通用控制項提供許多這類體驗和風格的內建支援。 如果您無法使用 WinUI 3,請考慮模擬我們設計工具組WinUI Gallery中示範的風格。

版面配置

Windows 應用程式會依照各種符合使用者需求的設定組態執行。 請依各種維度、裝置、視窗大小、DPI 設定和縮放比例設定,來測試您應用程式的窗格和/或頁面。 即使調整為小型維度的大小,您的應用程式也應該如預期般運作。

DPI 感知

WinUI 應用程式會自動調整其執行的每個顯示器。 其他 Windows 程式設計技術 (Win32、WinForms、WPF 等) 不會自動處理個別顯示器 DPI 縮放比例。 若未採取額外工作以支援這些技術處理個別監視器 DPI 縮放比例,應用程式可能會顯得模糊或大小不正確。 如需詳細資訊,請參閱 Windows 上的高 DPI 傳統型應用程式開發

回應式版面配置

使用回應式設計技術,最佳化不同視窗大小的應用程式頁面。 請遵循移動瀏覽或捲動的指導方針,以確保無論應用程式視窗有多小,使用者都總是能存取您的內容。

互動

Windows 使用者可以選擇各種不同的輸入裝置與您的應用程式互動,而 Windows 具有人們習慣使用的特定系統體驗。 若您的應用程式遵循這些體驗,您的使用者將能夠可靠地使用您的應用程式。 若您的應用程式未遵循這些慣例,使用者可能感到困惑或挫折。

物件上命令

使用物件上命令 ,例如操作功能表撥動命令,以及鍵盤快速鍵。 Windows 11 可改善滑鼠右鍵操作功能表的行為,因此如果您的應用程式建立操作功能表,請參閱最新的操作功能表整合指引。 WinUI 文字控制項會自動公開剪下/複製/貼上命令,但其他控制項可能需要額外的工作來支援這些命令。

文字互動

每當應用程式中有文字時,使用者都預期這些文字可以選取並複製。 如果文字是可編輯的,他們也會預期可以剪下和貼上。 為使用者提供一致的快速鍵,可以讓他們更有效率地完成工作。 請確定可以使用鍵盤、滑鼠或軌跡板、觸控和手寫筆來執行這些動作。

平移與捲動

很少應用程式 UI 能夠完全容納在不需捲動的單一頁面。 即使只有少數 UI 元素,使用者仍可自由調整應用程式視窗大小,並導致某些 UI 元素隱藏。 請確定應用程式的 UI 正確支援捲動和移動瀏覽 (使用鍵盤、滑鼠或軌跡板、觸控和手寫筆),讓使用者存取可能已移出可見視窗區域的任何 UI 元素。

視覺化風格

Windows 11 的建構基礎是 Windows 11 設計原:不費力、冷靜、個人、熟悉和完整 + 一致。 我們相信遵循這些原則的體驗可帶來絕佳的 Windows 使用者體驗。

材質: Acrylic 和 Mica

AcrylicMica是視覺材料 ,可為互動式 UI 控制項提供不同的「遮蔽」視覺樣式。 使用 Acrylic 將半透明樣式套用至暫時性表面,例如操作功能表、飛出視窗和其他可以消失關閉的元素。 使用Mica 將細緻的調適性色調新增至標題列等長時間 UI 表面。

如需 Acrylic 和 Mica 材質的詳細資訊,請參閱讓應用程式在 Windows 11 上表現出色的方法

深色與淺色主題

深色和淺色主題可讓使用者依照視覺喜好來調整應用程式。 Windows 11 更新色調,避免使用純白和純黑,達到更柔和的視覺效果,也使色彩更顯愉悅。 WinUI 預設支援切換深色和淺色主題 (請參閱 XAML 主題資源)。 針對 Win32 應用程式,請參閱支援 Win32 應用程式中的深色和淺色主題。 (Win32 應用程式中的標題列不會自動適應深色主題。請務必遵循文章中的標題列指引)。

已重新整理的 UI 元素

Windows 11 幾何經過設計以支援新式應用程式體驗。 結合漸進式圓角、巢狀元素和一致的間距,創造出柔和、冷靜和平易近人的效果,突顯統一的主旨與簡單易用的效益。

視覺效果和行為變更均已內建於 WinUI 3 之中。 您可以隨需使用 WinUI 3,充分利用已經完成的工作成果。 如果您無法使用 WinUI 3,請考慮模擬我們設計工具組WinUI Gallery中示範的風格。

捷徑功能表

內容功能表是使用者透過按一下滑鼠右鍵或觸碰並按住動作叫用的捷徑功能表,可顯示與使用者正在互動之控制項內容相關的命令功能表。 使用者預期操作功能表會在 Windows 各處保持一致的外觀和行為。 盡可能使用平台提供的內容功能表,使其與系統的其餘部分保持一致。

圖解和印刷樣式

Windows 11 已更新圖示 (「Segoe Fluent Icons」)、改善動畫圖示的支援,以及新的 UI 字型 (「Segoe UI Variable」)。 建議您盡可能在 Windows 11 上使用這些新的圖示和字型。 新的字型帶來更柔和的幾何,使文字更容易辨讀。

如需 Windows 圖解和印刷樣式的詳細資訊,請參閱讓應用程式在 Windows 11 上表現出色的方法

視窗行為和風格

應用程式會在 Windows 提供的框架中執行,而使用者預期內建的 Windows 外觀和行為在應用程式視窗之間會保持一致。 請考慮支援此處所列的功能,以確保您的應用程式在 Windows 11 上的外觀和功能符合使用者期望。

貼齊版面配置

Windows 11 大幅增強視窗貼齊效果,而 [貼齊版面配置] 功能表是一項新功能,可協助使用者探索並使用視窗貼齊的強大功能。 使用 [貼齊版面配置] 功能表,在不同的貼齊版面配置中測試您的應用程式,並確保您的應用程式支援不同的貼齊大小,例如 1/2、1/3 和 1/4 畫面。

如果應用程式預設未顯示 [貼齊版面配置] 功能表,請參閱 支援 Windows 11 傳統型應用程式的貼齊版面配置,瞭解啟用此功能的一些步驟。

標題列和標題按鈕

使用者可透過標題列和標題按鈕 (最小化、最大化、關閉) 與 Windows 互動,藉以調整大小、移動和關閉應用程式視窗。 擁有一致的體驗有助於人們順暢地使用您的應用程式。 請參閱 Windows 應用程式標題列以瞭解適用於 Windows 的標題列和標題按鈕設計。

您可以使用 Windows App SDK API 來整合應用程式內容與 WinUI 3、.NET、WinForms 和 WPF 應用程式中的標題列

圓角

在大部分情況下,Windows 11 上的應用程式視窗預設會有圓角。 如果您自訂了沒有圓角的應用程式視窗,請參閱對 Windows 11 的傳統型應用程式套用圓角,以瞭解您可以執行的一些動作。 您也應該避免自訂視窗框線和陰影,這可能導致系統無法對視窗套用圓角。

殼層整合點

透過 Windows 殼層整合,即使應用程式未在前景執行甚至未顯示在螢幕上,使用者也能從中獲益。 應用程式與 Windows 整合良好時,可融入使用者工作流程與其他應用程式中,有助於打造順暢無縫的體驗。

快顯通知

快顯通知是顯示在使用者畫面底部和通知中心的 Windows 通知。

  • 通知應該是個人化的、可操作的,而且對使用者具有實用性。 嘗試為您的使用者提供他們想要的內容,而不是您想要他們知道的內容。
  • 通知不應令人感到打擾。 應用程式若發出太多干擾,會導致使用者關閉您應用程式的這個重要管道。
  • 回應使用者的意圖。 選取通知後,應隨即啟動應用程式並呈現與通知相關的內容。 唯一的例外是使用者選取了與快速回覆等背景任務關聯的通知按鈕。
  • 提供一致的通知中心體驗。 清除舊通知,保持通知中心整齊有序。

如需快顯通知的詳細資訊,請參閱通知設計基本概念

效能與基礎

Windows 使用者會預期 Windows 應用程式展現卓越的效能和基礎要素。 當您設計和建置應用程式時,請務必記得最佳化記憶體使用量、耗電量、回應能力、可靠性,以及對長期永續性的影響。 安排時間來測試和測量應用程式的基礎要素和效能,可確保您的使用者享有一流體驗。

遵循本節中的最佳做法,可協助您符合客戶在這些準則中的期望。

若要深入瞭解,請參閱效能和基礎,該文介紹「什麼是應用程式效能,為何重要?」或「我可以使用哪些工具來測量 Windows 應用程式效能?」,並提供案例研究、相關部落格、支援社群等連結,另也提供資訊說明效能工程如何與永續性交集,以減少應用程式對地球環境的影響。

作業系統/硬體最佳化

Windows 應用程式可以透過各種方式建置、封裝及交付。 本節中的最佳做法可協助您在各種硬體組態中最佳化應用程式的上述層面。

MSIX 應用程式連結和 Azure 虛擬桌面

若要讓應用程式在企業環境中達到最佳執行效果,請新增 MSIX 應用程式連結的支援。

MSIX 應用程式連結可讓您將 MSIX 應用程式交付至實體和虛擬機器。 此功能專門適用於 Azure 虛擬桌面 (AVD),這是在雲端上執行的桌面和應用程式虛擬化服務。 搭配 AVD 使用 MSIX 應用程式連結可協助您改善使用者的登入時間,並降低企業的基礎結構成本。

Arm 上的 Windows

Windows 可以在 Arm 裝置上執行。 Arm 電腦的優點在於電池壽命較長,並提供行動數據網路的整合式支援。 這類電腦也提供絕佳的應用程式相容性,並可讓您執行現有的 x86x64 應用程式而無需修改。

為了獲得最佳效能,建議讓應用程式充分利用節能省電的 Arm 處理器架構,方法是建置完整的 Arm 版本,或最佳化部分程式碼基底,充分發揮原生效能的優勢。 如需這些技術的詳細資訊,請參閱在 Arm 上的 Windows適用於 Arm 上 Windows 11 應用的 Arm64EC

推播通知

推播通知可讓您以效能最佳化的方式,將雲端服務的資訊傳送至您的應用程式。 推播通知包括原始通知、徽章通知,以及從雲端服務傳送的快顯通知。

  • 請使用推播通知喚醒應用程式/用戶端,而不是使其持續執行,藉此將使用者的裝置效能最佳化。
  • 通知管道並非用來傳送廣告。
  • 請遵循retry-after標頭,藉此保護我們的服務,並確保通知傳達成功。
  • 從系統移除已過期/撤銷的管道。 Windows 推播通知服務 (WNS) 不會處理過期/撤銷管道的要求。
  • 請避免突然向 WNS 發出大量高載的要求, 這可能會導致回應遭到節流。
  • 請利用MS-CV標頭。 這有助於進行端對端追蹤和診斷。
  • 請設置備份機制,以因應通知無法運作的情況。
  • 使用 Azure 通知中心 (ANH)。 ANH 可讓您存取參與功能,例如設定目標對象、排程通知和廣播通知。 如果您目前是限定於 Windows 的開發人員,使用 ANH 可讓您未來輕鬆地將通知基礎結構轉換為其他平台。

應用程式探索和管理

可靠的安裝、更新和解除安裝體驗是一致、優質使用者體驗的關鍵所在。 下列最佳做法有助於確保使用者在探索和管理您的應用程式時留下良好印象:

應用程式探索

  • Microsoft Store 上架您的應用程式,可讓使用者更容易探索您的應用程式。
  • 若要跨多個管道裝載您的應用程式 (例如在網站和 Microsoft Store 上),您的應用程式身分識別和更新機制應該在所有管道上都保持一致。
  • 透過 Microsoft Store 散發您的應用程式,以便使用者更容易探索。 請注意,Store 應用程式是透過 Windows 封裝管理員 WinGet 提供給使用者。 如果您未發佈至 Microsoft Store,仍然可以透過 WinGet存放庫讓人們輕鬆在 WinGet 上探索您的應用程式。

安裝和解除安裝

  • 支援個別使用者安裝。 這有助於使用者更輕鬆地安裝,並避免 UAC 提示。
  • 請確定應用程式安裝流程沒有錯誤、資訊清楚,並且審慎考慮到檔案的管理。 應用程式安裝流程不應該留下任何暫存檔。
  • 盡可能避免要求提高權限進行安裝和要求作業系統重新啟動。
  • 支援無訊息安裝。 這對於企業環境中的應用程式管理能力十分重要。
  • 請確定您的應用程式列在 [應用程式 -> 已安裝的應用程式] 清單中。
  • 請考慮使用 MSIX 確保使用者享有順暢的安裝、更新和解除安裝體驗。 MSIX 會自動移除應用程式二進位檔和資料。 如需瞭解已封裝應用程式如何處理檔案和登錄項目,請參閱瞭解如何在 Windows 上執行已封裝傳統型桌面應用程式
  • 對於未封裝應用程式,請確定您的應用程式可以透過 [設定] 中的 [應用程式 -> 已安裝的應用程式] 清單輕鬆解除安裝。 解除安裝應用程式時,請確定會一併移除 [開始] 功能表中的項目、檔案、目錄、登錄項目和暫存檔。 請考慮為使用者提供在解除安裝應用程式時保留資料的選項。
  • 請確定在解除安裝期間,您的應用程式會移除所有二進位檔和應用程式資料。 使用者建立的內容應該儲存在 Documents 等位置,即使在使用者解除安裝應用程式後,仍可以保留相關內容。
  • 避免安裝或更新可能需要重新啟動的系統二進位檔。
  • RestartManager 整合,在每次作業系統更新之間儲存和還原狀態。

更新

  • 支援更新機制,可讓應用程式在使用者方便時重新啟動。 考慮使用 Windows 應用程式 SDK 重新開機 API 來管理 WinUI 3 應用程式的行為。
  • 請確定您的更新機制只會下載需要更新的已變更基本元件。 這可將所需的網路頻寬降到最低。
  • 請確定您提供更新和修復應用程式的方式。 請考慮使用可自動處理更新修復得 MSIX。 如需詳細資訊,請參閱自動更新和修復應用程式
  • 請考慮採用基於推播通知的更新,或在應用程式啟動時或重啟時檢查是否有可用的更新。

其他資源

協助工具

無障礙 Windows 應用程式支援豐富且包容的體驗,可滿足盡可能多人的需求,包括針對身心障礙人士 (暫時性和永久) 改善的功能和易用性、個人喜好設定、特定工作樣式或環境限制 (例如共用的工作空間、駕駛、烹飪、反光等等)。

事實上, 世界衛生組織對身心障礙的定義並非個人特徵,而是個人無法順利與周遭實體和數位世界之間互動。

無障礙性對人員和企業都有益

無障礙性是一項責任

全世界有超過 10 億人具有某種形式的身心障礙。 然而,每 10 個人中只有 1 人獲得充分參與我們經濟和社會所需的輔助技術。 通常,殘疾人的失業率是普通人失業率的兩倍。 身心障礙 (無論是情境性、暫時性或永久性) 都可能隨時影響我們中的任何人。

無障礙性是一項商機

根據 Microsoft 無障礙方法資料工作表:在工作場所積極採行最佳做法以雇用和支援身心障礙者的包容性組織,其績效優於同業且更能吸引和留任頂尖人才。 到 2020 年,千禧世代將占全球工作人口的 75%,他們通常會選擇符合自己價值觀的雇主。 多元與包容是其中最受重視的價值觀。

納入無障礙功能

在 Windows 應用程式中整合無障礙功能,可以最大程度增進使用者參與度、提高產品滿意度,並鼓勵培養產品忠誠度。 主動設計和實作無障礙體驗,通常可長期降低開發和維護成本。

如需建置無障礙 Windows 應用程式的詳細指引,請參閱 Windows 11 和 Windows 10 的無障礙功能

協助工具測試

無障礙深入解析是一套功能強大的工具,可讓開發人員測試其應用程式和服務的無障礙性。 以下是一些用於測試無障礙性的工具:

  1. 在 Windows 無障礙深入解析中進行檢查。 檢查無障礙樹狀圖,找出易於解決的問題,例如標籤中的提示、不正確的角色等。
  2. 在Windows 無障礙深入解析中進行事件監視·無障礙深入解析。 如需事件監視的詳細資訊,請參閱 支援 UI 自動化控制項類型
  3. 在您的 PR 或 CI/CD 中執行無障礙深入解析自動化檢查。 如需詳細資訊,請參閱 axe-pipelines-samples
  4. 修正所有您發現會直接影響無障礙性的 Bug。

安全性與隱私權

不安全的應用程式可能成為攻擊者執行惡意活動的切入點。 即使您的應用程式沒有安全性 Bug,攻擊者仍可使用您的應用程式,透過網路釣魚和其他違反安全性和隱私權界限的社交工程形式發起攻擊。 本節中的最佳做法可協助您降低安全性和使用者隱私權相關的風險。

安全性指導方針

  • 所有開發作業都請遵循安全性開發生命週期
    • 威脅建模可協助您避免安全性漏洞。
    • 使用安全的程式庫、語言和工具可徹底減少實作上的漏洞。
    • 安全預設值可防止使用者疏失造成的安全性問題。
  • 請勿要求系統管理權限來安裝您的應用程式。
    • 在理想情況下,您的應用程式應同時支援系統管理安裝和個別使用者安裝,
    • 方法之一是使用 MSIX 封裝
  • 請勿要求系統管理權限來執行您的應用程式。
    • 如果特定功能需要系統管理權限,請考慮將它們分隔至各自的流程中,以減少受攻擊面。
  • 最好使用可保證記憶體安全性的語言 (例如 C#、JavaScript 或 Rust),尤其是對於高風險的程式碼路徑 (例如剖析不受信任的資料)。
  • 使用編譯器和工具組提供的所有安全性防護功能 (請參閱適用於 Visual C++ 的 Microsoft Visual C++ 中的安全性功能)。
  • 請一律使用您選擇的語言或架構標準程式庫進行密碼編譯和處理其他攸關安全性的程式碼。 請勿嘗試自行建置。
  • 以數位方式簽署應用程式的所有元件,包括安裝程式及任何既有的解除安裝程式。 也要簽署所有構成應用程式的 EXE、DLL 和其他可執行檔案。
    • 數位簽章可讓使用者驗證應用程式的真實性,並允許企業系統管理員使用 Windows Defender 應用程式控制來保護裝置安全,
    • 方法之一是使用 MSIX 封裝。
  • 請確定所有網路通訊都採用安全傳輸方式進行,例如 SSL。
  • 提供護欄或其他防護機制,有助於保護使用者免於意外執行有害動作,甚至是在攻擊者脅迫的狀況下。
    • 簡單的「您確定要執行 X是/否」對話方塊通常沒有效果,因為使用者已習慣按一下「是」。

由於各種原因,大部分的新式應用程式會收集和使用大量資料,包括個人資料。 使用資料的三項常見理由是遙測、產品改良和創造營收,但使用者和監管機構愈來愈重視這些做法對隱私權的影響。 他們期望應用程式在收集和使用資料方面應具備透明度和控制權。 請使用下列秘訣來滿足使用者的隱私權需求。

隱私權指導方針

  • 請確定您的應用程式提供正確的隱私權原則。 在理想情況下,除了專為律師撰寫的詳盡法律原則文件以外,還要為非專業對象(您的使用者) 提供一份摘要文件。
  • 請熟悉應用程式供應所在市場的隱私權法規,並確保您的應用程式的隱私權標準符合任何揭露、使用權利、刪除要求等方面的規定,甚至更為嚴格。
  • 確定您僅收集完成應用程式體驗所需的最少個人資料。
    • 請勿只為了「以防萬一」才收集資料,應基於充分正當的理由收集所有資料,例如改善客戶體驗或促進創造營收。
  • 在收集和儲存個人資料之前,請務必先取得使用者的同意,並向使用者提供日後撤回決定的簡單方法。 請避免使用「暗黑模式」,例如在同意對話方塊中將「是」按鈕設計得比「否」按鈕更大或更顯眼。
    • 請查詢適用法規,以判斷特定資料種類需要哪些特定揭露和同意程序。 例如,某些地區可能允許使用者檢視、變更或刪除您所儲存的資料。
  • 如果您必須透過網路傳輸資料,請一律使用安全的連線,例如透過 TLS。
  • 避免將個人資料儲存在集中位置 (例如網站)。 如果必須儲存個人資料,請將儲存資料量減到最少,僅維持絕對必要的儲存時間長度,並確實對資料進行安全加密。
  • 確認您使用的任何協力廠商程式庫或 SDK 也有良好的隱私權做法。 請注意,這不僅限於廣告 SDK,任何連線到網際網路的程式庫都可能影響您應用程式使用者的隱私權。