在过去几年里,我们的上位机软件主要是用 WPF 和 WinForm 开发的。这些技术在 Windows 平台上确实很好用,也陪伴我们走过了从小规模试产到如今规模化交付的阶段。 但是,随着业务发展和客户需求的变化,单一的 Windows 技术栈逐渐成为了我们必须跨越的一道坎。
于是,我开始认真考虑把现有的 WPF 程序迁移到 Avalonia。
1. 历史包袱:WPF 与 WinForm 的遗产
公司之前的大部分上位机项目都采用 WPF 或 WinForm 编写。
- 优点:和 Windows 紧密结合,开发效率高,上手快。
- 缺点:局限性很大,只能运行在 Windows 上,想支持 Linux 或 Mac 就无能为力。
这意味着,如果客户现场环境不是 Windows,我们就得额外提供硬件或者虚拟机支持,增加了很多额外成本和维护风险。
2. 客户需求:跨平台是刚需
随着半导体设备在全球范围的交付,我们遇到了越来越多这样的情况:
- 有的客户现场只允许使用 Linux。
- 有的客户要求软件既能跑在 Windows 工控机上,也能在 Linux 工控机上运行。
这些需求是 必须满足的,而不是“未来可能有用”的可选功能。 所以我们必须选择一条真正的 跨平台技术路线。
3. 行业特性:实时性和稳定性优先
我们的软件主要应用于 半导体测试和仪器设备控制。这类软件和互联网应用不同:
- 需要和硬件仪器进行高速通讯;
- 对实时性要求高,延迟直接影响测试效率;
- 需要稳定的 UI 框架支撑长时间运行(常常是 7×24 小时)。
经过评估,基于 Electron 之类的 Web 技术并不适合这种场景;而 Avalonia 的性能和响应速度更接近 WPF,迁移成本也较低。
4. Qt:功能强大但成本太高
其实我们也认真考察过 Qt。
- 优点:跨平台成熟度最高,性能稳定,生态完备。
- 缺点:商业授权费用极其高昂。
和 Qt 销售沟通后,对方给出的是一个团队难以接受的报价。 对于小公司,很多时候“闭眼用开源版”也就过去了; 但我们公司现在规模已经起来,Qt 的法务团队已经盯上我们,经常收到他们的合规提醒。
在这种情况下,继续冒险使用 Qt 的免费版本显然不可行。
5. 选择 Avalonia 的理由
相比之下,Avalonia 对我们来说有以下几个优势:
- 开源免费,没有高昂的商业授权风险;
- 跨平台能力强,Windows / Linux / Mac 都能支持;
- 语法和 WPF 类似,迁移成本相对较低,团队不用推翻重学;
- 性能表现不错,更适合设备控制类应用。
综合考虑下来,迁移到 Avalonia 是目前对我们来说最合适的选择。
6. 结语
技术选型没有绝对的对错,只有适不适合。 在我们的业务场景里,WPF 的局限性、客户的跨平台需求、行业的实时性要求,以及 Qt 的高昂费用,最终促使我们坚定地选择了 Avalonia。
未来,我会继续分享我们在 WPF 到 Avalonia 迁移过程中的经验和踩坑,希望能给同行一些参考。