跳转至

利用微软生态开发桌面应用,什么框架是最优解?

  • 归档日期:2026-08-25
  • 问题:站在客观的角度,利用微软生态,现在开发桌面应用程序使用什么框架是最优解?
  • 默认前提:Windows 桌面、C#/.NET、需要长期维护的业务或商业应用。

最终结论

如果必须给出一个适用于大多数 Windows 桌面项目的默认答案:

我的选择> 选择 .NET 10 LTS + WPF + CommunityToolkit.Mvvm,并按需接入 Windows App SDK。

这是当前综合开发效率、成熟度、控件生态、部署灵活性、维护风险和微软技术支持之后,风险收益比最高的通用方案。

但有一个明确例外:

如果是从零开发、强调 Windows 11 原生体验与 Fluent Design 的消费级应用,而且关键控件、工具和部署方式已经验证可用,则选择 .NET 10 + WinUI 3 + Windows App SDK

微软官方推荐 WinUI 3 用于新的 Windows 原生应用;与此同时,微软也明确说明 WPF 在现代 .NET 上仍被完整支持、继续获得功能更新,现有及大量企业应用不需要为了技术更新而迁移。

因此要区分两种“最优”:

  • 微软战略方向最优:WinUI 3。
  • 多数实际桌面项目的综合工程最优:现代 .NET 上的 WPF。

为什么默认推荐 WPF

1. 技术成熟,但并没有停止发展

WPF 不是只能运行在旧 .NET Framework 上的遗留框架。现代 WPF 随每个 .NET 版本继续更新;近年的改进包括性能、可访问性、远程桌面硬件加速、Fluent 主题、亮暗模式和系统强调色支持。

.NET 10 是当前活跃的 LTS 版本,官方支持至 2028-11-14。新项目应使用现代 SDK 风格项目和 net10.0-windows,而不是以 .NET Framework 4.8 作为默认起点。

2. 桌面业务能力更完整

WPF 在以下场景中积累更深:

  • DataGrid、表单、树、复杂数据绑定和验证。
  • 报表、图表、打印、文档、富文本和设计器。
  • 自定义控件、ControlTemplate、Style、Trigger 和动画。
  • DevExpress、Telerik、Syncfusion 等企业控件。
  • MVVM、模块化、插件和大型解决方案实践。
  • Visual Studio XAML Designer、Blend 和 Hot Reload。

这些能力会直接影响开发成本,往往比“框架是不是最新”更重要。

3. 可以使用新的微软能力,而不必更换 UI 框架

Windows App SDK 并不等同于 WinUI 3。WinUI 3 是其中的 UI 框架,而 Windows App SDK 的许多非 UI 能力可以直接用于 WPF,例如应用生命周期、窗口、通知和其他 Windows 功能。

WPF 还可以按需使用:

  • Windows App SDK / WinRT API。
  • WebView2。
  • MSIX 与包标识。
  • Windows 通知、文件关联、协议激活。
  • Windows Credential Manager、Hello、蓝牙等系统能力。
  • BlazorWebView,用于适合采用 Web UI 的局部模块。

因此,“想使用微软最新生态”并不构成把整个 UI 改成 WinUI 3 的充分理由。

4. 部署选择更灵活

WPF 可以根据客户环境选择 MSIX、ClickOnce、MSI/EXE、自包含发布或传统企业部署。WinUI 3 默认更偏向 MSIX,也支持非打包部署,但需要进一步处理 Windows App SDK Runtime;ClickOnce 当前不支持 WinUI 3。

对于内网、离线环境、已有安装器或需要复杂安装逻辑的企业软件,这种灵活性有实际价值。

WinUI 3 为什么不是所有项目的默认最优解

WinUI 3 是微软当前推荐的新 Windows 原生 UI,默认提供现代 Fluent Design、主题和最新 Windows 体验,这是它最重要的优势。

但从工程角度还需考虑:

  • Visual Studio 当前仍没有适用于 WinUI 3 的完整 XAML Designer,主要依赖 Hot Reload。
  • 某些 WPF XAML 能力没有一对一实现,例如 DataTrigger、MultiBinding、DynamicResource 和 AdornerLayer 需要替代设计。
  • 当前没有第一方内置 DataGrid,企业控件必须检查具体厂商版本。
  • 打包、签名、运行时依赖和非打包部署比传统 WPF 更需要提前规划。
  • WPF 第三方控件不能直接用于 WinUI 3。
  • WinUI 3 并不天然比 WPF 更快;真实性能取决于控件、绑定、可视树和具体页面。

这些问题并不代表 WinUI 3 不成熟或不值得使用,而是说明它更适合“收益明确”的项目,不适合只因官方主推就无条件采用。

框架选择表

项目场景 最优先选择 原因
Windows 企业业务软件、工业软件、复杂工具 WPF 成熟、控件完整、MVVM 和第三方生态深、部署灵活
全新消费级 Windows 11 应用 WinUI 3 Fluent Design 和最新 Windows 原生体验最好
已有大型 WPF 项目 继续 WPF,升级现代 .NET 微软明确支持;升级和原地现代化风险最低
简单内部 CRUD、配置工具、一次性管理工具 WinForms Visual Designer 和开发速度非常高;不适合复杂现代视觉产品
Windows + iOS + Android,移动端是主要目标 .NET MAUI 微软官方多端方案;标准目标还包括 Mac Catalyst,但不是桌面优先框架
Windows + macOS + Linux,桌面端是主要目标 Avalonia UI 比 MAUI 更偏跨平台桌面,但它不是微软自有 UI 框架,需接受其生态和平台差异
团队拥有大量 Razor/Blazor 前端资产 WPF/WinForms + Blazor Hybrid,或 MAUI Blazor Hybrid 可复用 Razor 组件;界面运行在嵌入式 WebView 中,不应误认为纯原生控件
需要极深 Win32、DirectX、系统级或极限性能 C++/Win32,必要时搭配 WinUI 3 直接控制原生 API,但研发成本更高

不建议作为新项目默认起点

  • UWP:微软已将其置于维护模式,新项目应使用 Windows App SDK / WinUI 3。
  • .NET Framework 4.8 + WPF:只适合受遗留依赖约束的项目;新项目应使用现代 .NET LTS。
  • WinForms 做复杂现代 UI:它适合高效制作工具和表单,但复杂样式、动画和大型 UI 架构不是优势。
  • .NET MAUI 做纯 Windows 桌面项目:它的核心价值是移动端和多端共享,纯 Windows 项目平白承担抽象层成本。
  • 为了“可能的跨平台”而立即选择跨平台框架:没有明确的平台需求时,会提前支付控件、平台适配、测试和发布成本。

推荐的微软技术栈基线

对于典型 Windows 桌面业务应用,可采用:

.NET 10 LTS
└─ WPF
   ├─ CommunityToolkit.Mvvm
   ├─ Microsoft.Extensions.DependencyInjection / Options / Logging(按规模使用)
   ├─ EF Core 或 HTTP API(按数据架构选择)
   ├─ Windows App SDK / WinRT(只在需要相应 Windows 功能时引入)
   ├─ WebView2 或 BlazorWebView(只用于适合 Web 化的局部页面)
   └─ MSIX / ClickOnce / MSI(按交付环境选择)

架构上建议:

  • UI 使用 MVVM,但不要为形式而制造过多抽象。
  • ViewModel 和业务层避免依赖 System.Windows.*,提高测试和未来迁移能力。
  • 硬件、文件选择、通知、注册表等平台功能通过小型接口隔离。
  • 先选择部署模型,再设计自动更新和包标识;不要等开发完成才考虑签名与安装。
  • 第三方 DataGrid、图表、报表等关键控件在立项阶段完成原型验证。

CommunityToolkit.Mvvm 是微软维护的轻量、模块化 MVVM 库,可同时用于 WPF 和 WinUI 3,适合作为默认 MVVM 基础设施。

客观决策规则

如果以下问题的答案都是“是”,选择 WinUI 3:

  1. 项目是全新的 Windows 10 1809+ / Windows 11 应用。
  2. 现代 Fluent 外观是核心产品价值,而不只是可以后期换主题。
  3. 所有关键控件都有可接受的 WinUI 3 实现。
  4. 团队不依赖 XAML Designer、ClickOnce 或 WPF 专用组件。
  5. 已验证安装、签名、更新和 Windows App SDK Runtime 方案。

只要其中有两三项不成立,WPF 通常就是更稳健的默认选择。

如果项目已经是 WPF,则默认路线应是:

  1. 从 .NET Framework 升级到 .NET 10 LTS。
  2. 启用 WPF Fluent Theme 或第三方现代主题。
  3. 按需引入 Windows App SDK、WinRT、WebView2 和 MSIX。
  4. 只有 UI 确实需要全面重构时,再验证 WinUI 3。

微软自己的迁移指南将“升级现代 .NET”评为低到中风险,将“原地接入 Windows App SDK”评为低风险,而将完整迁移 WinUI 3 评为中高风险。这正是默认推荐现代 WPF,而不是无条件推荐 WinUI 3 的主要客观依据。

官方资料