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