-
.Net 跨平台 UI 解决方案的尝试笔记.
本文是个人结合自身需求选择跨平台 UI 时进行的资料整理,带有较强主观性.
我主要做桌面,至少几年之内不能抛弃Win7,能跨 iOS 和 Android 是基本需求,能跨 Web 更好.而且对于图形性能有一定要求.
如有进展会在此更新.
2021-10-17更.
当前 .Net 下主流的跨平台解决方案有:
-
MAUI
-
UnoPlatform
-
Avalonia
三者都是使用 XAML 语言来描述界面,对于 WPF 或 UWP 开发者有天然的亲和力.
简单的对比一下支持的平台:
-
MAUI https://docs.microsoft.com/zh-cn/dotnet/maui/supported-platforms
-
UnoPlatform https://platform.uno/docs/articles/getting-started/requirements.html
-
Avalonia https://docs.avaloniaui.net/
方案 | iOS | Android | Win7 | Win10 | MacOS | WebAssembly | Linux |
---|---|---|---|---|---|---|---|
MAUI | 10+ | 5.0+ | 不支持 | 支持 | 10.13+ | 不支持 | 非官方支持 |
UnoPlatform | 8+ | 5.0+ | 支持 | 支持 | 10.13+ | 支持(性能拉垮) | 支持 |
Avalonia | 计划中 | 计划中 | 支持 | 支持 | 10.13+ | 不支持 | 支持 |
-
MAUI 由于是微软官方支持,理论上来说未来的可用资源会最多,支持力度也会最大,但在使用前需要仔细考虑以下问题:
-
产品是否需要支持 Win7,在国内还有大量的用户在使用 Win7 且不会升级的情况下,是否抛弃这部分用户.
-
基于微软的一贯作风,说不定没用几年又会被推倒重来.
-
-
UnoPlatform 支持的平台最多,可以尝试.
-
Avalonia 尚不支持移动平台,使用它得到的跨平台收益有限,且根据个人对多个版本的试用,发现 bug 太多,而且都是比较低级的 bug.用它来做项目风险实在太大.
基于以上原因,个人暂时选择 UnoPlatform 作为主要研究方向.
2021-10-19更:
经过几天对 UnoPlatform 的研究和测试,发现 UnoPlatform 的 WebAssembly 性能拉垮,与 Blazor WebAssembly 的性能相差甚远,完全无法满足我的需要,而且当前发布的所谓正式版本,实际只是个半成品.把官方提供的例子跑起来随随便便就能发现一些小 bug,完全达不到产品级的要求,暂时不再继续研究了.期待以后能稳定.
看来 .net 跨平台 UI 暂时没有很好的解决方案了,实在有跨平台需求的话,把业务逻辑与 UI 彻底分开,使用 Standard 2.0 写业务逻辑,然后
需要 WebAssembly 就用 Blazor;
需要 iOS 和 Android 就用 MAUI(Xamarin);
需要桌面就用 WPF.
2021-10-22更:
Blazor + Electron 也许是个不错的注意,就是体积大,占内存多.不过如果日后 Electron 的轻量级替代成熟的话,应该很有看头.
资料:https://zhuanlan.zhihu.com/p/108832003
来源:https://www.cnblogs.com/8u7tgyjire7890/p/15417019.html