MAUI 入门教程系列(1.框架简介)

Posted dotNET跨平台

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MAUI 入门教程系列(1.框架简介)相关的知识,希望对你有一定的参考价值。

前言

在2020年5月, 微软宣布了MAUI跨平台框架, MAUI 是Xamarin.Forms演变而来, 这也就意味着, 如果你原来具备Xamarin.Forms开发经验, 你可以流畅的过渡到MAUI开发当中。
原本于2021年底发布的MAUI正式版被推迟到了2022年5月底发布。现在, 你目前可以通过安装VS2022 预览版进行安装MAUI开发选项。此版本中, 将不会存在Xamarin.Forms项目模板。

MAUI新特性一览

  • 单个代码库支持多个平台

  • 完整的热重载功能 (.NET/XAML)

  • 原生平台UI

  • 支持完整的自绘

  • 多窗口模式

  • 集成跨平台本机API

  • 支持.NET6/C#10新特性

Xamarin.Forms VS MAUI

平台架构

首先,平台架构的主要变化是.NET MAUI与.NET 6.0集成.

Xamarin.Forms.NET MAUI

项目结构

Xamarin.Forms和.NET MAUI之间的主要区别在于它们的项目结构。

Xamarin.FormsMAUI
每个平台维护一个单独的项目一个项目支持多个平台
平台相关的代码在不同项目中单独维护在Platforms文件夹中维护

使用Xamarin.Forms,开发人员可能会在处理针对多个平台的多个项目时感到繁琐。图像,字体和平台相关代码的维护;添加不同的依赖项,并在它们被引用为 NuGet 包时解析它们。遇到这些问题后,开发人员现在可以在 .NET MAUI 中通过单个项目得到解决。

由于 .NET MAUI 是一个简单的项目应用,因此它可以在基于多目标的结构上运行。.NET MAUI 应用包含一个 “Platforms” 文件夹,其子文件夹表示 androidios Maccatalyst 和 Windows 等平台,以定位在平台上启动应用的特定于平台的代码。它也可以根据您自己的文件名进行多目标。

支持的平台和版本

Xamarin和.NET MAUI之间平台支持的主要区别在于它们对Windows的支持。Xamarin 支持 UWP,而 .NET MAUI 支持 WinUI。有关支持版本的详细信息,请查看下表。

Xamarin.FormsMAUI
- Android 4.4 (API 19) 或更高版本
- iOS 9 或更高版本
- UWP:Windows 10,内部版本 10.0.16299.0 或更高版本,用于 .NET Standard 2.0 支持
- Android 5.0 (API 21) 或更高版本。
- iOS 10 或更高版本。
- macOS 10.13 或更高版本
- WinUI:Windows 11 和 Windows 10 版本 1809 或更高版本
其他平台支持:
Tizen
macOS 10.13 或更高版本
GTK#
WPF
其他平台支持:
Tizen,由三星支持。
Linux,由社区支持。

.NET CLI

.NET 命令行界面 (CLI) 是一个跨平台工具链,用于开发、构建、运行和发布 .NET 应用程序。此 .NET CLI 为 .NET MAUI 应用程序提供了无缝的构建和运行体验。

Xamarin.Forms.NET MAUI
Xamarin 支持 .NET Framework 来构建和运行应用。.NET MAUI 支持 .NET CLI 工具链来构建、运行和发布 .NET 应用程序。

渲染器和处理程序架构

在 Xamarin 中,控件是使用呈现器创建的。当开发人员想要自定义本机控件的 UI 时,他们必须使用自定义呈现器来执行此操作。这些渲染器在性能和应用大小方面花费了大量用户。
但是 .NET MAUI 使用的处理程序体系结构与本机程序集非常松散地耦合。借助本机平台,这会产生具有更好性能的轻量级应用程序。
如果需要,可以在此处使用渲染器。移植时,可以重用 Xamarin.Forms 自定义呈现器。

Xamarin.Forms.NET MAUI
使用呈现器体系结构。使用处理程序体系结构。
与本机控件紧密耦合。与本机控件松散耦合。
不能在使用处理程序。如果需要,可以在此处使用渲染器。移植时,可以重用 Xamarin.Forms 自定义呈现器。

.NET 6

.NET MAUI 已集成到 .NET 6 中,而 Xamarin.Forms 是一个 .NET Framework。由于 .NET 6 集成,您可以在 .NET MAUI 中使用以下 .NET 6 和 C#10 功能。

资源管理

.NET MAUI在资源方面接管了Xamarin,特别是在图像方面。您无需维护一组映像即可满足特定于平台或设备的需求。单个 SVG 图像足以满足所有平台和设备要求。SVG图像被转换为.png图像,以便在所有平台上工作。

Xamarin.Forms.NET MAUI
资源包括图像和类。资源包括MauiImage和MauiResources等类。
需要为特定于平台的设备维护基于分辨率的图像。借助 SVG 图像,无需维护特定于平台或特定于设备的图像。
需要为每个平台单独维护资源文件。资源可以在单个位置进行维护。

热重载支持

Xamarin.Forms.NET MAUI
.NET热重载:

不支持(但 UWP 对使用 的运行时编辑的支持有限)。

NET 的编辑和继续功能)。

.NET热重载:
提供完整的 .NET 热重载支持。
XAML热重载:
实验的:SDK 4.x 和 Visual Studio 2019 版本 16.9 之前的版本。
功能完成:SDK 5.x 和 Visual Studio 2019 版本 16.9 或更高版本。
XAML热重载:
提供完整的支持。

图形绘制

在 Xamarin 中,没有可用于满足任何绘图要求的直接 API。您必须使用渲染器在本机端执行此操作。但.NET MAUI现在抽象化了本机绘图,并为您带来了更好的图形 API。.NET MAUI中的跨平台图形功能提供了用于绘制和绘制形状的绘图画布。画笔是主要类型。

Xamarin.Forms.NET MAUI
没有可用的图形。图形模式,如绘画,混合可用。
无法自定义绘图。支持绘制图形
颜色画笔

配置资源和服务

与 Xamarin 不同,.NET MAUI 应用是使用 .NET 通用主机引导的。因此,如果要初始化任何字体,服务或第三方组件,则可以从单个位置完成。

public static MauiApp CreateMauiApp()
	
		var builder = MauiApp.CreateBuilder();
		builder
			.UseMauiApp<App>()
			.ConfigureFonts(fonts =>
			
				fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
				fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold");
			);

		return builder.Build();
	

可访问性

通常在 Xamarin 中,我们使用自动化属性和本机 API 为屏幕阅读器提供对应用中所用控件中文本的适当辅助功能。
Xamarin.Forms 辅助功能
但 .NET MAUI 提供语义属性以在应用中提供辅助功能值(您可以在 .NET MAUI 中使用自动化属性,但推荐的方法是语义属性)。、
MAUI 可访问性

Blazor应用程序

在 Xamarin 中无法开发 Blazor 混合应用,但你可以生成 .NET MAUI Blazor 应用。

跨平台API

Xamarin.Forms.NET MAUI
可以使用 Xamarin.Essentials 执行设备功能的跨平台 API。设备功能的跨平台 API 也与 Microsoft.Maui.Essentials 命名空间下的 MAUI 集成。

多窗口

在.NET MAUI中,可以一次在Android,iPad上的iOS,Mac Catalyst和Windows上打开多个窗口。此支持在 Xamarin 中不可用。

以上是关于MAUI 入门教程系列(1.框架简介)的主要内容,如果未能解决你的问题,请参考以下文章

MAUI 入门教程系列(3.多目标平台)

MAUI 入门教程系列(4.通用主机)

MAUI 自定义绘图入门

MAUI 通用权限框架(ABP)

MAUI 自定义绘图入门

Blazor Hybrid / MAUI 简介和实战