介绍一款.NET开源架构.NET MAUI

server/2024/10/16 2:22:58/

        .NET 多平台应用 UI (.NET MAUI) 是一个跨平台框架,用于使用 C# 和 XAML 创建本机移动和桌面应用。

        使用 .NET MAUI,可从单个共享代码库开发可在 Android、iOS、macOS 和 Windows 上运行的应用。

 

        .NET MAUI 是一款开放源代码应用,是 Xamarin.Forms 的进化版,从移动场景扩展到了桌面场景,并从头重新生成了 UI 控件,以提高性能和可扩展性。 如果以前使用过 Xamarin.Forms 来生成跨平台用户界面,那么你会注意到它与 .NET MAUI 有许多相似之处。 但也有一些差异。 通过使用 .NET MAUI,可使用单个项目创建多平台应用,但如果有必要,可以添加特定于平台的源代码和资源。 .NET MAUI 的主要目的之一是使你能够在单个代码库中实现尽可能多的应用逻辑和 UI 布局。 

.NET MAUI 适合哪些用户

.NET MAUI 适用于以下开发人员:

  • 基于 Visual Studio 中的单一共享代码库,使用 XAML 和 C# 编写跨平台应用。
  • 跨平台共享 UI 布局和设计。
  • 跨平台共享代码、测试和业务逻辑。

.NET MAUI 如何运作

.NET MAUI 将 Android、iOS、macOS 和 Windows API 统一到单个 API 中,提供“编写一次就能在任何地方运行”的开发人员体验,同时还提供了对每个原生平台各个方面的深入访问。

.NET 6 或更高版本提供了一系列用于创建应用的特定于平台的框架:.NET Android、.NET iOS、.NET macOS 和 Windows UI 3 (WinUI 3) 库。 这些框架都可以访问相同的 .NET 基类库 (BCL)。 该库将底层平台的细节从代码中抽象出来。 BCL 依赖于 .NET 运行时来为代码提供执行环境。 对于 Android、iOS 和 macOS,该环境由 Mono 实现,它是 .NET 运行时的实现。 在 Windows 上,.NET CoreCLR 提供执行环境。

虽然 BCL 使在不同类型的设备上运行的应用能够共享常见的业务逻辑,但各种平台具有不同的方式来定义应用的用户界面,并且它们提供了不同的模型来指定用户界面元素如何通信和互操作。 可以使用特定于平台的适当框架(.NET Android、.NET iOS、.NET macOS 或 WinUI 3)分别为每个平台创建 UI,但此方法要求你为每个单独的设备系列维护代码库。

.NET MAUI 提供了用于为移动和桌面应用生成 UI 的单一框架。 下图显示了 .NET MAUI 应用体系结构的高级视图:

 

在 .NET MAUI 应用中,你需要编写主要与 .NET MAUI API (1) 交互的代码。 然后,.NET MAUI 直接使用本机平台 API (3)。 此外,应用代码还可以根据需要直接运用平台 API (2)。

.NET MAUI 应用可以在电脑或 Mac 上编写,并编译为本机应用包:

  • 通过 .NET MAUI 生成的 Android 应用从 C# 编译为中间语言 (IL),然后在应用启动时实时 (JIT) 编译为本机程序集。
  • 通过 .NET MAUI 生成的 iOS 应用完全是预先 (AOT) 编译的,从 C# 编译为本机 ARM 程序集代码。
  • 通过 .NET MAUI 生成的 macOS 应用使用 Mac Catalyst,这是 Apple 的一种解决方案,允许将使用 UIKit 生成的 iOS 应用移植到桌面,并根据需要使用其他 AppKit 和平台 API 对其进行扩充。
  • 通过 .NET MAUI 生成的 Windows 应用使用 Windows UI 3 (WinUI 3) 库创建面向 Windows 桌面的本机应用。

 

.NET MAUI 提供的内容

.NET MAUI 提供了一个控件集合,可用于显示数据、启动操作、指示活动、显示集合、选取数据等。 除了控件集合之外,.NET MAUI 还提供:

  • 用于设计页的精心布局引擎。
  • 用于创建丰富导航类型的多种页类型,如抽屉。
  • 对数据绑定的支持,以便实现更简洁且可维护性更高的开发模式。
  • 自定义处理程序,以增强 UI 元素的显示方式的能力。
  • 用于访问本机设备功能的跨平台 API。 这些 API 使应用能够访问设备功能,例如 GPS、加速计、电池和网络状态。 有关详细信息,请参阅用于设备功能的跨平台 API。
  • 跨平台图形功能,提供了一个画布,用于支持画图和绘制形状及图像、组合操作和图形对象转换。
  • 单一项目系统,使用多目标定位来定位 Android、iOS、macOS 和 Windows。 有关更多信息,请参阅 .NET MAUI 单一项目。
  • .NET 热重载可帮助在应用运行时修改 XAML 和托管源代码,然后无需重新生成应用就能观察修改结果。 有关详细信息,请参阅 .NET 热重载。

针对设备功能的跨平台 API

.NET MAUI 提供针对本机设备功能的跨平台 API。 .NET MAUI 提供的用于访问设备功能的功能示例包括:

  • 访问传感器,例如设备上的加速计、指南针和陀螺仪。
  • 能够检查设备的网络连接状态并检测更改。
  • 提供有关运行应用的设备的信息。
  • 在应用之间将文本复制并粘贴到系统剪贴板。
  • 从设备中选择一个或多个文件。
  • 将数据安全地存储为键/值对。
  • 利用内置的文本转语音引擎从设备读取文本。
  • 启动基于浏览器的身份验证流,以侦听对注册到应用的特定 URL 的回调。

单个项目

.NET MAUI 单一项目融合了开发应用时通常会遇到的特定于平台的开发体验,并将其抽象化为可面向 Android、iOS、macOS 和 Windows 的单一共享项目。

无论面向的平台是什么,.NET MAUI 单一项目都能提供简化且一致的跨平台开发体验。 .NET MAUI 单一项目提供以下功能:

  • 一个可面向 Android、iOS、macOS 和 Windows 的共享项目。
  • 经简化的用于运行 .NET MAUI 应用的调试目标选择。
  • 单一项目内的共享资源文件。
  • 指定应用标题、ID 和版本的单个应用清单。
  • 根据需要访问特定于平台的 API 和工具。
  • 单一跨平台应用入口点。

.NET MAUI 单一项目是利用多目标方法实现的,并且使用了 SDK 样式项目。 有关 .NET MAUI 单一项目的详细信息,请参阅 .NET MAUI 单一项目。

热重载

.NET MAUI 包括对 .NET 热重载的支持,允许在应用运行时修改应用托管的源代码,而无需手动暂停或命中断点。 然后,可以将代码编辑应用于正在运行的应用,而无需重新编译。

.NET MAUI 还包括对 XAML 热重载的支持,允许保存 XAML 文件并查看正在运行的应用中反映的更改,而无需重新编译。 此外,导航状态和数据将会被保留,让你能够快速迭代 UI,而不会丢失已在应用中完成的进度。

 

 

 


http://www.ppmy.cn/server/26352.html

相关文章

本地构建编译Apache-Seatunnel2.3.5适配Web1.0.0运行实现Mysql-CDC示例

本地构建编译Apache-Seatunnel2.3.5适配Web1.0.0运行实现Mysql-CDC示例 文章目录 1.前言2.编译2.1版本说明2.2 seatunnel2.3.4-release分支配置2.3maven调优配置 3.web1.0.0适配3.1配置文件修改和新增文件3.2手动拷贝jar修改依赖3.3修改web不兼容的代码3.4 web编译打包 4.运行m…

首页最新 多IP浏览器防关联:如何配置多个独立且稳定的IP地址?

在互联网时代,IP地址的重要性不言而喻。然而,IP关联问题却成为一项令人担忧的隐私和安全挑战。针对这个问题,多IP浏览器是一种解决方案,可以帮助用户单独配置多个独立且稳定的IP地址,有效地防止IP关联。 一、IP关联是…

Linux基础part-7

1、文本处理工具【grep】 【grep】 是一个文本搜索工具,它可以根据用户指定的模式在文件中进行搜索,并打印出包含匹配模式的行。"Global Regular Expression Print" “全局正则表达式打印”。grep 命令的三个常用变体 【grep】——支持基本的…

小程序地理位置权限如何申请?

这篇内容会教大家如何快速申请“获取当前的地理位置(onLocationChange)”接口,以便帮助大家顺利开通接口。以下内容是本人经历了多次的申请经历得出来的经验,来之不易,望大家给予鼓励! 小程序地理位置接口有…

PFA容量瓶耐受强酸强碱进口特氟龙材质定容瓶

PFA容量瓶,也叫特氟龙容量瓶,是用于配制标准浓度溶液的实验室器皿,是有着细长颈、梨形肚的耐强腐蚀平底塑料瓶,颈上有标线,可直接配置标准溶液和准确稀释溶液以及制备样品溶液。 因其有着不易碎、材质纯净、化学稳定性…

Windows系统下安装Mosquitto的步骤(2)

接前一篇文章:Windows系统下安装Mosquitto的步骤(1) 本文内容参考: Windows10上安装Mosquitto的步骤(win10、win11 安装mqtt) - IPS99技术分享 MQTT:windows环境下配置MQTT服务器(mosquitto)_…

关于下载上传的sheetjs

一、背景 需要讲后端返回来的表格数据通过前端设置导出其中某些字段,而且得是xlsx格式的。 那就考虑使用控件SheetJS。如果是几年前,一般来说,保存excel的文件都是后端去处理,处理完成给前端一个接口,前端调用了打开…

Baumer工业相机堡盟工业相机如何通过NEOAPISDK使用相机的Plug-and-Play(即插即用PnP)技术(C#)

Baumer工业相机堡盟工业相机如何通过NEOAPISDK使用相机的Plug-and-Play(即插即用PnP)技术(C#) Baumer工业相机Baumer工业相机NEOAPI SDK和相机即插即用技术的技术背景Baumer工业相机通过NEOAPISDK使用相机的即插即用技术1.引用合适…