
在過去幾年裡,我們的上位機軟體主要是用 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 遷移過程中的經驗和踩坑,希望能給同行一些參考。