為新的企業營運應用程式選擇最佳 UI 架構

已完成

諮詢公司最大的客戶之一希望為醫療保健產業建立企業營運應用程式。 應用程式用於醫院機構中的任務關鍵性工作。

在此案例中,我們會討論應用程式的需求,並決定哪一個 Windows 架構是開發小組的最佳選項。

建置醫療保健應用程式

醫療保健應用程式是一個企業應用程式,旨在部署至醫療保健專業人員,例如醫院的醫生、護士和管理員。 針對此應用程式需要關注的主要需求包括:

  • 應用程式的外觀和樣式。 應用程式應納入每個醫院的商標組成部分,例如色彩主題和標誌。
  • 裝置相容性。 醫院並不總是有最新的硬體和軟體,因此回溯相容性很重要。
  • 應用程式效能是關鍵。 醫院是高壓力環境,因此應用程式必須具有回應能力且快速。

讓我們逐步解說此專案的所有決策準則,並了解如何使用每個架構來滿足這些需求。

分析決策準則

在本節中,我們會分析醫療保健應用程式的需求,並了解哪些架構可用來滿足這些需求。 我們也查看每個架構的優點和限制,及其如何影響將其用於此企業營運應用程式的決策。

應用程式的外觀和樣式

客戶表示,應用程式支援最新的 Fluent 設計系統指導並不重要。 不過,他們想要讓應用程式的主題與每個醫院的商標相符。 此樣式必須可供設定,而不需重新發佈應用程式的自訂版本。 WPF 和 WinUI 都可以滿足其主題需求。 主題也可以在 Windows Forms 中完成,但實作較困難,且可能需要一些第三方程式庫。 由於 Fluent 設計並非必要項目,因此小組不限於選取 WinUI。

裝置相容性

使用此應用程式的醫療保健用戶端混合了裝置類型。 大部分現有的醫院工作站都有 Windows 10 桌上型電腦。 不過,某些醫療保健專業人員在執行最新版 Windows 的平板電腦上存取應用程式。 應用程式必須搭配鍵盤和滑鼠使用,但其也應該與觸控輸入搭配使用。 應用程式也應該在所有這些裝置上具有回應能力且快速。

WPF 似乎最適合此需求。 WPF 可讓應用程式在使用者觸碰螢幕時透過引發事件來偵測及回應觸控。 其也具有手寫筆的原生支援。 WPF 應用程式可以使用滑鼠 API 將手寫筆視為滑鼠,但 WPF 也表現出手寫筆裝置的抽象概念,即使用類似於鍵盤和滑鼠的模型。

Windows Forms 應用程式較難以在觸控裝置上使用。 它們可以搭配手寫筆使用,但不像 WPF 一樣容易使用。 WinUI 是觸控裝置的絕佳選擇,但不適用於每個 Windows 10 版本。 WinUI 僅適用於 Windows 11 和 Windows 10 1809 版和更新版本。 醫療保健用戶端混合了未知的 Windows 10 和 Windows 11 裝置,因此 WinUI 不適合此需求。

小組企業開發人員的技能

開發小組已熟悉針對此專案考慮的所有三個架構。 小組有使用 WPF、Windows Forms 和 WinUI 建置應用程式的經驗,且熟悉最新版的 .NET 和 C#。 開發人員也熟悉 XAML,因此他們可以使用 Visual Studio 中的 XAML 設計工具或編輯器來建置應用程式的 UI。

應用程式效能和回應性

此應用程式會用於高壓力環境的醫院機構,因此重點在於具有回應能力且快速。

WPF 是適用於此需求的絕佳選擇。 使用 .NET Framework 建置的 WPF 應用程式不像使用最新版 .NET 建置的應用程式一樣具有高效能。 不過,使用 .NET 8 建置的 WPF 應用程式具有高效能和回應能力。 對於具有多個畫面和複雜資料繫結需求的企業應用程式而言,WPF 是絕佳的選擇。 WPF 也有一組豐富的控制項,可用來建置應用程式。

部署案例和選項

此應用程式必須透過自訂安裝程式進行部署。 其會部署至執行 Windows 10 和 Windows 11 之桌上型電腦上的企業客戶。 應用程式應該可輕鬆使用新功能和錯誤修正進行更新。

WPF 和 Windows Forms 應用程式可以使用 Microsoft Store (搭配 MSIX)、ClickOnce、Windows Installer 或第三方安裝程式解決方案進行部署。 它們可以部署至所有目前支援的 Windows 版本。 WinUI 應用程式無法部署至所有 Windows 10 版本。 WinUI 僅適用於 Windows 11 和 Windows 10 1809 版和更新版本。 WinUI 應用程式可以使用 Microsoft Store (搭配 MSIX)、ClickOnce 或第三方安裝程式解決方案進行部署。

選擇架構

針對此專案,WPF 是最佳選擇。 對於具有多個畫面和複雜資料繫結需求的複雜企業應用程式而言,WPF 是絕佳的選擇。 WPF 也有一組豐富的控制項,可用來建置應用程式。 它也支援其效能和部署需求。