.NET MAUI 跨平台应用开发框架概述
.NET 多平台应用 UI(.NET MAUI)是一个跨平台框架,用于使用 C# 和 XAML 创建本机移动和桌面应用。通过 .NET MAUI,开发者可以从单个共享代码库开发能够在 Android、iOS、macOS 和 Windows 上运行的应用。
.NET MAUI 是开源的,由 Xamarin.Forms 演变而来,从移动方案扩展到桌面方案,UI 控件被重新构建以提升性能和扩展性。对于熟悉 Xamarin.Forms 的开发者,.NET MAUI 提供了许多相似之处,但也有一些关键差异。它允许使用单个项目创建多平台应用,同时支持在需要时添加特定于平台的代码和资源。其主要目标是在单一代码库中最大化应用逻辑和 UI 布局的共享。
.NET MAUI 面向的开发者
.NET MAUI 专为希望实现以下目标的开发人员设计:使用 XAML 和 C# 从 Visual Studio 中的单个共享代码库编写跨平台应用;跨平台共享 UI 布局和设计;以及跨平台共享代码、测试和业务逻辑。
.NET MAUI 的工作原理
.NET MAUI 将 Android、iOS、macOS 和 Windows 的 API 统一到一个 API 中,实现了“一次编写,到处运行”的开发体验,同时允许深度访问每个本机平台的特性。在 .NET 6 或更高版本中,它依赖于特定于平台的框架(如适用于 Android 的 .NET、适用于 iOS 的 .NET 等),这些框架共享同一个 .NET 基类库(BCL)。BCL 抽象了平台细节,而执行环境由 Mono(用于 Android、iOS 和 macOS)或 .NET Core CLR(用于 Windows)提供。
尽管 BCL 支持共享业务逻辑,但各平台的 UI 定义和交互模型不同。.NET MAUI 提供了一个 UI 框架,允许开发者编写主要与 .NET MAUI 控件和 API 层交互的代码,该层直接调用本机平台 API。应用代码也可以根据需要直接调用平台 API。
.NET MAUI 应用在电脑或 Mac 上编写,并编译为本机应用包:Android 应用使用 JIT 编译;iOS 应用使用 AOT 编译;macOS 应用通过 Mac Catalyst 扩展;Windows 应用使用 WinUI 3 库。需要注意的是,生成 iOS 和 macOS 应用需要 Mac。
.NET MAUI 提供的功能
.NET MAUI 提供了一系列控件用于数据显示、用户交互、活动指示等,还包括:
- 复杂的布局引擎用于页面设计。
- 多种页面类型支持丰富导航,如抽屉导航。
- 数据绑定支持,提升开发模式的可维护性。
- 自定义处理程序以增强 UI 元素渲染。
- 跨平台 API 用于访问设备功能,如传感器、网络状态、剪贴板、文件选择、安全存储等。
- 跨平台图形功能,支持绘图和图像处理。
- 单一项目系统,使用多目标面向 Android、iOS、macOS 和 Windows,简化开发体验。
- .NET 热重载,允许在应用运行时修改 XAML 和托管源代码,无需重新编译,快速迭代 UI。
用于设备功能的跨平台 API
.NET MAUI 提供了跨平台 API 来访问本机设备功能,例如加速计、指南针、陀螺仪等传感器;检查网络连接状态;获取设备信息;复制粘贴文本;选择文件;安全存储键值对;文本转语音;以及基于浏览器的身份验证流。
单一项目系统
.NET MAUI 单一项目抽象了特定于平台的开发体验,允许通过一个共享项目面向多个平台。它提供简化调试、共享资源文件、统一应用清单、访问特定于平台 API 的能力,以及单个跨平台应用入口点,使用多目标和 SDK 样式项目实现。
热重载
.NET MAUI 支持 .NET 热重载和 XAML 热重载。开发者可以在应用运行时修改托管源代码或 XAML 文件,更改会立即反映在运行的应用中,无需重新编译,同时保留导航状态和数据,极大提升开发效率。