什么是 MAUI? MAUI 和 Xamarin 之间有什么区别

What is MAUI? and what are differences between MAUI and Xamarin

那么,Xamarin.Forms 会怎样?

什么是多平台应用UI?

MAUI 和 Xamarin

有什么区别

在哪里可以生成MAUI项目?

MAUI 是下一代 Xamarin Forms,具有更广泛的平台支持。第一个预览版将于 2020 年 11 月在 .NET 5 中提供,第一个生产版本将于 2021 年 11 月随 .NET 6 一起提供。

Xamarin Forms 将在 2021 年推出 MAUI 后支持一年,然后将弃用以支持 MAUI。

此时Xamarin.Forms是一个成熟的框架,而MAUI是一个博客post。这使得它们很难被客观地比较。

总的来说,MAUI 的想法是 Xamarin.Forms 的进一步发展。就我个人而言,我没有看到任何革命性的(甚至是重要的)宣布。主要区别在于 MAUI 将是一个具有多个输出的单个项目,而不是每个平台的多个项目。在管理公共资产方面也应该有一些改进,因为通常将资产放在平台项目中而不是公共项目中,但即使现在 Xamarin 中的大部分也是可能的,所以很难说这是否是某种改进或者只是一个营销技巧。

另外,对 macOS 的支持也应该从测试版进入正式版。同样,很难说这是否会显着提升质量相当低的 Beta 版或只是一种营销技巧。

通过 .NET 5,Microsoft 开始了统一 .NET 平台的旅程,将 .NET Core 和 Mono/Xamarin 整合到一个基础 class 库 (BCL) 和工具链 (SDK) 中,更多关于它 here.

.NET MAUI 众所周知,这是一个新的升级解决方案名称,作为多平台应用程序 UI 框架,用于使用 .NET 为 Android、iOS、macOS 和 Windows。它是 Xamarin.Forms 的演变,建立在它之上,成为并成为用于构建本机跨平台应用程序的新旗舰 .NET 解决方案。

对我个人而言,.NET 团队将更加专注于这个框架的开发,而 Xamarin.Forms 团队在过去一两年对平台产生了巨大的影响和改进。

目前,GitHub 存储库(2020 年 7 月)与 XF 存储库几乎相同,所有命名空间都是 System.Maui,但将来情况会大不相同。正如他们在主题演讲和其他来源上所承诺的那样:

  • 一个项目针对多个平台和设备
  • 一个位置来管理字体和图像等资源
  • 多目标组织特定于平台的代码

它还将为您提供以不同的现代模式和框架构建应用程序的支持,例如:

  • MVVM
  • MVU
  • RxUI

使用 .NET MAUI 创建和开发应用程序的工具是:

  • Visual Studio
  • Visual Studio 对于 Mac
  • Visual Studio代码

由于 .NET Maui 将更多地参与到整个 .NET 开发工具中,因此将添加对 .NET Core CLI 的支持。换句话说,这意味着我们将能够从命令行创建一个新项目:

dotnet new maui

.NET Maui 的主要目标是:

  • 提升应用性能
  • 提高控件扩展性的简单性
  • 提高贡献的简单性
  • 启用开发人员选项以使用模型-视图-更新 (MVU) 和 Blazor

在过去的一两年里 Xamarin.Forms 有一个非常频繁的新版本发布周期,而且这种情况肯定会继续下去。该团队将继续致力于此,但同时 .NET Maui 将变得更加成熟,并且随着 .NET 6 的发布,Xamarin.Forms 将停止提供功能和新内容。

.NET Maui 完全可用并就绪后 Xamarin.Forms 将继续获得 12 个月的支持。更多关于路线图和开发状态的信息可以在官方 GitHub 页面 here 上找到,整个 wiki 页面充满了关于未来发展的有用信息。

此外,这里还有 David Ortinau 在 InfoQ here.

上关于 .NET MAUI 的精彩问答

更新:2021 年 9 月 15 日:

“.NET 团队一直在努力与社区一起公开开发它,我们致力于它的发布。不幸的是,.NET MAUI 将无法使用 .NET 进行生产6 GA 在 11 月。我们希望在第一天为我们的用户提供最佳体验、性能和质量,为此,我们需要推迟时间表。我们现在的目标是 2022 年第二季度初的 .NET MAUI 遗传算法。”资料来源:https://devblogs.microsoft.com/dotnet/update-on-dotnet-maui/

让我们从建筑和历史开始,这可以解决大部分差异。

Xamarin 和 MAUI 历史

  • Xamarin 在 .Net Core 之前引入,基本上微软收购了 Xamarin,因为它可以为 Andriod 和 iOS 使用 c# 编写代码。
  • Xamarin 基于 Mono Base Class 库 (BCL)。 BCL 库是那些允许您开发应用程序的库。
  • 同样,.Net Framework 基于基础 Class 库,这与 Mono BCL 不同。因此,我们不能在不同的 BCL 和 Mono BCL 之间共享代码,这会产生一个限制,即我们不能一次编写代码并在多个平台上使用它。
  • 后来 .Net Core 出现了,它允许我们编写一个应用程序,可以 运行 在 Windows、Android 和 iOS 上,但它仍然有自己的核心BCL.
  • 后来,Microsoft 提出了 .Net Standard 的方法,允许在不同的 BCL 之间共享代码,例如 BCL for .Net Core、.Net Framework 或 Xamarin。
  • 现在,Microsoft 已决定迁移到一个 .Net,即 .Net 6,不再是 .Net Framework、.Net Core。它是适用于所有类型应用程序的一个平台。

Xamarin 可以做什么

  • Xamarin 基于 Mono BCL。 (Mono 是 .Net 的原始 open-source 版本)。
  • 允许为 Android 或 IOS 构建本机应用程序。这提供了连接到 Android 或 IOS.
  • 的本机功能的能力
  • 注意:Microsoft 已决定在 2022 年 11 月之前弃用 Xamarin 支持。

现在来MAUI

  • .Net 多平台应用程序 UI

  • 与 Xamarin 类似,MAUI 应用程序是使用 XAML 和 C# 编写的。

  • 使用可跨平台使用的相同代码。

  • 在 Xamarin 中,我们为 Andriod 或 IOS 创建单独的项目,但在 MAUI 中,您可以使用单个项目结构与共享项目相结合。

  • 即使只有一个项目结构,也可以为 Andriod 或 IOS 在 MAUI 中编写 Native 特定代码。

MAUI 架构和项目结构:(如果图片未加载:使用此:https://docs.microsoft.com/en-us/dotnet/maui/what-is-maui

Xamarin 架构:(如果图像未加载:使用此:https://docs.microsoft.com/en-us/xamarin/get-started/what-is-xamarin