MAUI 和 Uno 平台有什么区别?
What is the difference between MAUI and Uno Platform?
我有点困惑。任何人都可以准确解释两者之间的区别吗?我们什么时候应该使用 MAUI,什么时候应该使用 UNO?
正如我所意识到的,两者都可以在不同的平台上运行,那么同时引入两种不同技术的原因是什么?他们可以在 Windows 7 上 运行 吗?或者他们只限于 Windows 10?我的 WPF 可以在 Linux 上用这两种技术编程 运行 吗?
我已经使用 Xamarin.Forms(将重命名为 MAUI)开发了 5 年多,而 Uno Platform 的开发时间即将四个月。对我来说,有许多差异值得我花时间从 Xamarin.Forms 转移到 Uno。一、相同点:
- 两者都是 C# 跨平台框架
- 两者都有 XAML 支持
- 两者都支持 iOS、Android、通用 Windows 平台,并且(在较小程度上)通过非 .Forms Mac OS Xamarin 平台框架。
- 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 程序是否可以使用这两种技术 运行 on Linux。答案是
- Xamarin.Forms:不支持Linux;
- Uno Platform:不,但是可以迁移您的代码。该工作与将您的程序从 WPF 移植到 UWP 大致相同。
您的里程可能会有所不同。但是,如果您有使用 WPF 或 UWP 的经验,我会强烈推荐 Uno。如果你对这两者都没有经验,那么我会推荐 Uno,因为 Android.
的性能优越
另一种观点是,目前您只能将 UNO 与 Xamarin.Forms 今天所做的进行比较。如果你是MAUI团队的一员,那你就应该点亮前路,但我不是。您真的不知道进行了哪些结构性更改以提高性能,最近 Microsoft 非常重视性能 - 所以我猜他们肯定会在 Java/C# 鸿沟上努力。
另外要考虑的是 MAUI 是微软的 API,UNO 不是(现在) 我知道在未来,微软倾向于收购他们喜欢并符合愿景的技术。
如果您现在需要跨平台开发,您正在比较现在可用的 UNO 和 Xamarin.Forms。如果不延迟,MAUI 将在 2021 年宣布。
现在回答你真正的问题:你今天可以在 linux 使用 .NET Core 运行 WPF,你不需要等待 MAUI 或退出 Microsoft API的.
Uno 团队也在文档中讨论了这个问题 - https://platform.uno/docs/articles/intro.html#how-is-uno-platform-different-from-net-maui
Uno Platform 应用程序是跨平台的,运行在 Web 以及移动和桌面上,同样来自单个代码库。 Blazor 是 ASP.NET 的一项功能,主要用于构建 Web 应用程序。
Uno Platform 应用程序是用 C# 和 XAML 标记编写的,而 Blazor 应用程序是用 'Razor' 语法编写的,是 HTML/CSS 和 C# 的混合体。
Uno Platform 和 Blazor 都利用 .NET 的 WebAssembly 支持 运行 在浏览器中原生支持。
WinUI 不支持在浏览器中执行 XAML+ 代码; Microsoft 的 WASM 集成意味着 WebView WinUI 可以在其中执行 blazor 组件。所以,如果你想拥有可以在浏览器中使用的图形组件(作为一个真正的网络应用程序,使用 wasm)并且在任何平台(windows/mac/Android/IOS)中作为一个经典的桌面应用程序,你必须将它定义为 HTML,而不是 XAML。不许。
我有点困惑。任何人都可以准确解释两者之间的区别吗?我们什么时候应该使用 MAUI,什么时候应该使用 UNO? 正如我所意识到的,两者都可以在不同的平台上运行,那么同时引入两种不同技术的原因是什么?他们可以在 Windows 7 上 运行 吗?或者他们只限于 Windows 10?我的 WPF 可以在 Linux 上用这两种技术编程 运行 吗?
我已经使用 Xamarin.Forms(将重命名为 MAUI)开发了 5 年多,而 Uno Platform 的开发时间即将四个月。对我来说,有许多差异值得我花时间从 Xamarin.Forms 转移到 Uno。一、相同点:
- 两者都是 C# 跨平台框架
- 两者都有 XAML 支持
- 两者都支持 iOS、Android、通用 Windows 平台,并且(在较小程度上)通过非 .Forms Mac OS Xamarin 平台框架。
- 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 程序是否可以使用这两种技术 运行 on Linux。答案是
- Xamarin.Forms:不支持Linux;
- Uno Platform:不,但是可以迁移您的代码。该工作与将您的程序从 WPF 移植到 UWP 大致相同。
您的里程可能会有所不同。但是,如果您有使用 WPF 或 UWP 的经验,我会强烈推荐 Uno。如果你对这两者都没有经验,那么我会推荐 Uno,因为 Android.
的性能优越另一种观点是,目前您只能将 UNO 与 Xamarin.Forms 今天所做的进行比较。如果你是MAUI团队的一员,那你就应该点亮前路,但我不是。您真的不知道进行了哪些结构性更改以提高性能,最近 Microsoft 非常重视性能 - 所以我猜他们肯定会在 Java/C# 鸿沟上努力。
另外要考虑的是 MAUI 是微软的 API,UNO 不是(现在) 我知道在未来,微软倾向于收购他们喜欢并符合愿景的技术。
如果您现在需要跨平台开发,您正在比较现在可用的 UNO 和 Xamarin.Forms。如果不延迟,MAUI 将在 2021 年宣布。
现在回答你真正的问题:你今天可以在 linux 使用 .NET Core 运行 WPF,你不需要等待 MAUI 或退出 Microsoft API的.
Uno 团队也在文档中讨论了这个问题 - https://platform.uno/docs/articles/intro.html#how-is-uno-platform-different-from-net-maui
Uno Platform 应用程序是跨平台的,运行在 Web 以及移动和桌面上,同样来自单个代码库。 Blazor 是 ASP.NET 的一项功能,主要用于构建 Web 应用程序。
Uno Platform 应用程序是用 C# 和 XAML 标记编写的,而 Blazor 应用程序是用 'Razor' 语法编写的,是 HTML/CSS 和 C# 的混合体。
Uno Platform 和 Blazor 都利用 .NET 的 WebAssembly 支持 运行 在浏览器中原生支持。
WinUI 不支持在浏览器中执行 XAML+ 代码; Microsoft 的 WASM 集成意味着 WebView WinUI 可以在其中执行 blazor 组件。所以,如果你想拥有可以在浏览器中使用的图形组件(作为一个真正的网络应用程序,使用 wasm)并且在任何平台(windows/mac/Android/IOS)中作为一个经典的桌面应用程序,你必须将它定义为 HTML,而不是 XAML。不许。