MAUI 和 Uno 平台有什麼區別?
我有點困惑。任何人都可以準確解釋兩者之間的區別嗎?我們什麼時候應該使用 MAUI,什麼時候應該使用 UNO?我意識到,兩者都可以在不同的平台上執行,那麼同時引入兩種不同技術的原因是什麼?它們可以在 Windows 7 上執行嗎?還是它們僅限於 Windows 10?我的 WPF 程序可以使用這兩種技術在 Linux 上執行嗎?
我已經使用 Xamarin.Forms(將更名為 MAUI)開發了 5 年多,並且使用 Uno Platform 開發了 4 個月。對我來說,有許多不同之處讓我值得花時間從 Xamarin.Forms 遷移到 Uno。一、相似之處:
- 兩者都是 C# 跨平台框架
- 兩者都支持 XAML
- 兩者都通過非 .Forms Xamarin 平台框架支持 iOS、Android、通用 Windows 平台和(在較小程度上)Mac OS。
- Xamarin.Essentials 在上述平台上與 Xamarin 和 Uno 一起使用
- 兩者都沒有對列印、PDF 生成或 PNG 生成的內置支持。
現在的區別:
在架構上,Xamarin.Forms 是它自己的抽象層,位於本機 API 之上,因為 Uno 在本機 API 上建構 UWP 介面。在我看來,這是最重要的區別,原因有以下三個:
- 在 Android 中,Xamarin.Forms 抽象包括測量和佈局管理。這是非常昂貴的,而且對於除了最簡單的列表視圖之外的所有視圖,都會導致性能非常差。相比之下,Uno 在本機層執行此操作 - 從而避免了 Java 和 C# 之間的大量來回傳遞。
- 在 WASM 中,Xamarin 通過 Blazor 進行渲染——它支持混合伺服器/客戶端應用程序。不幸的是,與 Uno 採用的方法相比,這增加了複雜性。Xamarin 方法是否有性能損失還有待觀察。
- 因為 Uno 在原生 UI 框架上建構 UWP,所以打開封面並在功能上進行深度更改非常簡單。在 Xamarin.Forms 中執行此操作要困難得多(如果在某些情況下不是不可能的話)。
Uno 強烈支持 WPF(所以是的,它可以在 Windows 7 中執行)、Tizen 和 Linux (GTK)。
Uno 支持 UWP XAML 的複雜性 - 如果您有 WPF 或 UWP 經驗,那麼它具有一些主要優勢。否則,它會在你身上消失,就像在我身上一樣。我希望改變這一點。
Uno 支持 WinUI 和 Windows 社區工具包庫。
雖然我不能確定這一點,但我相信 Xamarin.Forms 的存在時間比 Uno Platform 長了大約 2-3 年。話雖如此,Uno 在功能和程式碼質量方面已迅速趕上 Xamarin。我相信這部分是因為 UWP 作為非常成熟的操作規範。
根據我將大約 132k 行 Xamarin.Forms 程式碼的項目遷移到 Uno 的經驗,Uno 明顯不那麼冗長,大約為 65k 行。幾乎所有這些減少都在 UI 程式碼行中(模型、視圖模型和業務邏輯幾乎沒有受到影響)。這主要是由於功能豐富的 UWP (Uno) 控制項可以有更多的功能。
最後,您詢問您的 WPF 程序是否可以使用這兩種技術在 Linux 上執行。答案是
- Xamarin.Forms:不。不支持 Linux;
- Uno Platform:不,但可以遷移您的程式碼。這項工作與將您的程序從 WPF 移植到 UWP 大致相同。
你的旅費可能會改變。但是,如果您有 WPF 或 UWP 方面的經驗,我強烈推薦 Uno。如果您都沒有這方面的經驗,那麼我會推薦 Uno,因為它在 Android 上具有卓越的性能。