为新的业务线应用程序选择最佳 UI 框架

已完成

该咨询公司最大的客户之一希望为医疗保健行业构建一个业务线应用程序。 此应用程序用于医院设置中的关键型任务。

在此方案中,我们讨论了应用程序的要求,并确定哪个 Windows 框架是开发团队的最佳选择。

构建医疗保健应用程序

医疗保健应用程序是一个企业应用程序,目的是部署给医院的医生、护士和管理员等医疗保健专业人员。 此应用程序需要关注的关键要求是:

  • 应用程序的外观和样式。 该应用程序应包含每个医院的品牌组件,如颜色主题和徽标。
  • 设备兼容性。 医院并不总是具有最新的硬件和软件,因此后向兼容性非常重要。
  • 应用程序性能是关键。 医院是高压力环境,因此应用程序必须响应迅速且运行快速。

让我们演练一下此项目的所有决策标准,看看如何使用每个框架来满足这些要求。

分析决策标准

在本部分中,我们分析了医疗保健应用程序的要求,查看了哪些框架可用于满足这些要求。 我们还了解了每个框架的优点和限制,以及它们如何影响将其用于此业务线应用程序的决策。

应用程序的外观和样式

客户表示,应用程序是否支持最新的 Fluent 设计系统指南并不重要。 但是,他们希望应用程序的主题能够匹配每个医院的品牌打造。 此样式必须是可配置的,而无需重新分发应用程序的自定义版本。 WPF 和 WinUI 都可以满足其主题化需求。 主题化也可以在 Windows 窗体中完成,但实现难度更大,可能需要一些第三方库。 由于 Fluent 设计不是必需的,因此团队的选择并不局限于 WinUI。

设备兼容性

使用此应用程序的医疗保健客户拥有混合设备类型。 大多数现有的医院工作站都有 Windows 10 台式电脑。 但是,一些医疗保健专业人员使用运行最新版本 Windows 的平板电脑访问该应用程序。 应用程序必须与键盘和鼠标一起使用,但它也可以很好地配合触摸输入。 应用程序在所有这些设备上也应该响应迅速且运行快速。

WPF 似乎最适合这一要求。 WPF 能够使应用程序在用户触摸屏幕时通过引发事件来检测和响应触摸。 它还为触笔提供本机支持。 WPF 应用程序通过使用鼠标 API 可以将触笔视为鼠标,但 WPF 还公开了触笔设备抽象层,该抽象层使用类似于键盘和鼠标的模型。

Windows 窗体应用程序更难以在触摸设备上使用。 它们可以与触笔一起使用,但不像 WPF 那样容易使用。 WinUI 对于触摸设备是一个不错的选择,但它并不是在每个版本的 Windows 10 上提供。 WinUI 仅适用于 Windows 11 和 Windows 10 版本 1809 及更高版本。 该医疗保健客户使用未知的 Windows 10 和 Windows 11 设备混合,因此 WinUI 并不是最适合此要求的选择。

团队企业开发人员的技能集

开发团队熟悉此项目所考虑的所有三个框架。 该团队拥有使用 WPF、Windows 窗体和 WinUI 构建应用程序的经验,并且熟悉最新版本的 .NET 和 C# 。 开发人员还熟悉 XAML,因此他们可以使用 Visual Studio 中的 XAML 设计器或编辑器来为应用程序构建 UI。

应用程序性能和响应能力

此应用程序在医院环境中使用,这是一个高压力环境,因此它必须响应迅速且运行快速。

WPF 是符合此要求的最佳选择。 使用 .NET Framework 构建的 WPF 应用程序不如使用最新版本的 .NET 构建的应用程序性能好。 但是,使用 .NET 8 构建的 WPF 应用程序是高性能且响应迅速的。 对于具有多个屏幕和复杂数据绑定要求的企业应用程序来说,WPF 是一个不错的选择。 WPF 还有一组丰富的控件,可用于构建应用程序。

部署方案和选项

必须通过自定义安装程序部署此应用程序。 将它部署到运行 Windows 10 和 Windows 11 的台式电脑上的企业客户。 应用程序应该很容易更新新功能和 bug 修复。

可以使用 Microsoft Store(带有 MSIX)、ClickOnce、Windows Installer 或第三方安装程序解决方案来部署 WPF 和 Windows 窗体应用程序。 可以将其部署到当前支持的所有 Windows 版本。 无法将 WinUI 应用程序部署到所有 Windows 10 版本。 WinUI 仅适用于 Windows 11 和 Windows 10 版本 1809 及更高版本。 可以使用 Microsoft Store(带有 MSIX)、ClickOnce 或第三方安装程序解决方案来部署 WinUI 应用程序。

选择框架

对于此项目,WPF 是最佳的选择。 对于具有多个屏幕和复杂数据绑定要求的复杂企业应用程序,WPF 是一个不错的选择。 WPF 还有一组丰富的控件,可用于构建应用程序。 它还支持其性能和部署要求。