.net 毛伊岛和Uno平台有什么区别?

.net 毛伊岛和Uno平台有什么区别?,.net,xaml,uwp,uno-platform,maui,.net,Xaml,Uwp,Uno Platform,Maui,我有点困惑。有人能确切地解释这两者之间的区别吗?我们什么时候应该使用毛伊岛和乌诺岛? 我意识到,两者都可以在不同的平台上运行,那么同时引入两种不同技术的原因是什么呢?它们可以在Windows7上运行吗?还是只限于Windows10?我的WPF程序能用这两种技术在Linux上运行吗?我用Xamarin.Forms(改名为MAUI)开发了5年多,用Uno平台开发了4个月。对我来说,有许多不同之处,使我值得花时间从Xamarin.Forms转到Uno。第一,相似之处: 两者都是C#跨平台框架 两者都

我有点困惑。有人能确切地解释这两者之间的区别吗?我们什么时候应该使用毛伊岛和乌诺岛?
我意识到,两者都可以在不同的平台上运行,那么同时引入两种不同技术的原因是什么呢?它们可以在Windows7上运行吗?还是只限于Windows10?我的WPF程序能用这两种技术在Linux上运行吗?

我用Xamarin.Forms(改名为MAUI)开发了5年多,用Uno平台开发了4个月。对我来说,有许多不同之处,使我值得花时间从Xamarin.Forms转到Uno。第一,相似之处:

  • 两者都是C#跨平台框架
  • 两者都有XAML支持
  • 两者都通过非.Forms Xamarin平台框架支持iOS、Android、通用Windows平台和(在一定程度上)Mac操作系统
  • Essentials在上述平台上与Xamarin和Uno一起工作
  • 它们都没有内置的打印、PDF生成或PNG生成支持
现在,区别在于:

  • 在体系结构上,Xamarin.Forms是本机API之上自己的抽象层,Uno在本机API上构建UWP接口。在我看来,这是最重要的区别,原因有三:
    • 在Android中,Xamarin.Forms抽象包括度量和布局管理。这非常昂贵,而且除了最简单的列表视图外,其他所有视图的性能都非常差。相比之下,Uno在本机层执行此操作,从而避免了Java和C#之间的大量来回传递
    • 在WASM中,Xamarin通过Blazor进行渲染,Blazor支持混合服务器/客户端应用程序。不幸的是,与联合国办事处采取的方法相比,这增加了复杂性。尚不清楚Xamarin方法是否会对性能造成影响
    • 因为Uno是在本地UI框架上构建UWP的,所以打开封面并对功能进行深刻的更改是非常简单的。在Xamarin.Forms中实现这一点要困难得多(如果在某些情况下不是不可能的话)
  • Uno对WPF有很强的支持(所以是的,它可以在Windows7、Tizen和Linux(GTK)中运行)
  • Uno支持UWP XAML的复杂性——如果您有WPF或UWP方面的经验,它有一些主要的优势。否则,你会失去它,就像我一样。我希望能改变这一点
  • Uno支持WinUI和Windows社区工具包库
  • 虽然我不能确定这一点,但我相信Xamarin.Forms比Uno平台已经存在了2-3年。话虽如此,Uno在功能和代码质量方面很快赶上了Xamarin。我相信这部分是因为UWP是非常成熟的操作规范
  • 根据我将大约132k行Xamarin.Forms代码迁移到Uno的经验,Uno的详细程度要低得多,大约65k行。几乎所有的减少都是在UI代码行中进行的(模型、视图模型和业务逻辑几乎没有被触及)。这在很大程度上是由于功能丰富的UWP(Uno)控件可以有更多
最后,您询问您的WPF程序是否可以使用这两种技术在Linux上运行。答案是

  • Xamarin.Forms:否。不支持Linux
  • Uno平台:没有,但是可以迁移代码。这与将您的程序从WPF移植到UWP差不多

您的里程可能会有所不同。然而,如果你有WPF或UWP的经验,我强烈推荐Uno。如果您对两者都没有经验,那么我建议您使用Uno,因为它在Android上的性能非常出色。

另一种观点是,目前您只能将Uno与Xamarin.Forms今天的功能进行比较。如果你是毛伊岛团队的成员,那么你应该照亮道路,但我不是。你真的不知道为了提高性能正在进行哪些结构上的改变,最近微软非常重视性能,所以我想他们肯定会在Java/C的划分上下功夫

另外要考虑的是毛伊岛是微软的API,UNO不是(现在),将来微软会倾向于购买他们喜欢的技术,并且符合前景。 如果您现在需要跨平台开发,您可以比较现在可用的UNO和Xamarin.Forms。毛伊岛将于2021年宣布,如果它不被推迟的话


现在回答您真正的问题:您现在可以使用.NET Core在linux上运行WPF,您无需等待MAUI或退出Microsoft API。

Uno团队也在文档中讨论了这个问题-


Uno平台应用程序是跨平台的,运行在web以及移动和桌面上,从单个代码库开始。Blazor是ASP.NET的一项功能,主要用于构建web应用程序


Uno平台应用程序是用C#和XAML标记编写的,而Blazor应用程序是用“Razor”语法编写的,它是HTML/CSS和C#的混合体


Uno平台和Blazor都利用.NET的WebAssembly支持在浏览器中本机运行。

我不会说它们是同时发布的,我相信Uno平台已经存在了一段时间,但毛伊岛将在明年11月(2021年)针对GA。它们是两个不同的“人”在本质上做同一件事的不同努力。如果您将WPF应用程序移植到UWP,然后使用UNO,则是。但是,不是完好无损的。毛伊岛尚未发布,但是,当它发布时,您必须将WPF移植到毛伊岛。WPF现在是一条死胡同,它在除Windows之外的任何平台上都不起作用,开箱即用。哦,终于,一个理性的声音!我认为最后一句话不正确。现在不能在.NET内核上的Linux上运行WPF。您可以在Linux上运行.NET内核,但不能运行WPF.WPF