.NET MAUI(多平台应用程序 UI)由 Microsoft 开发,是一个开源框架,用于为多个平台构建本机移动和桌面应用程序,包括 Android、iOS、macOS、Windows 等,并且也使用单一代码库。与 Xamarin 表单不同,开发人员必须为每个目标平台维护单独的代码库。
.NET Framework 概述
如果您知道.NET 框架是什么以及它是如何工作的,那么您可以跳过本节并跳转到“它是如何工作的”。
.NET Framework 是 Microsoft 创建的软件开发平台。它提供了一个全面且一致的编程模型,用于跨各种 Microsoft Windows 平台(包括桌面、Web 和移动设备)构建和运行应用程序。
以下是 .NET Framework 的一些主要功能和组件:
公共语言运行时 (CLR): CLR 是 .NET Framework 的基础。它提供内存管理、垃圾收集和异常处理等核心服务。它还支持语言互操作性,允许在同一应用程序中一起使用多种编程语言。
基类库 (BCL): BCL 是预构建的类、类型和 API 的集合,为开发人员提供了广泛的功能。它包括文件 I/O、网络、数据访问、加密、线程等类。BCL 提供可重复使用的组件,可简化应用程序开发。
语言支持: .NET Framework 支持多种编程语言,包括 C#、Visual Basic .NET (VB.NET) 和 F#。开发人员可以选择自己喜欢的语言来编写代码,并利用每种语言可用的丰富工具和库。
框架类库 (FCL): FCL 是构建在 BCL 之上的库和框架的集合。它为特定类型的应用程序提供附加功能,例如用于桌面应用程序的 Windows Presentation Foundation (WPF)、用于 Web 开发的 ASP.NET 以及用于构建面向服务的应用程序的 Windows Communication Foundation (WCF)。
部署和执行: .NET Framework 应用程序通常部署为已编译的程序集(.exe 或 .dll 文件)以及任何所需的依赖项。在运行时,程序集由 CLR 执行,CLR 即时 (JIT) 将 IL(中间语言)代码编译为本机机器指令。
.NET MAUI 的工作原理
编写 .NET MAUI 代码(主要是 C#)后,将发生以下步骤:
构建应用程序
代码(包括对 BCL 类的引用)是使用 .NET 构建工具或集成开发环境 (IDE)(如Visual Studio) .
在构建过程中,C# 代码会转换为中间语言 (IL) 或通用中间语言 (CIL)。该 IL 与平台无关,可以在具有兼容 .NET 运行时的任何平台上运行。
我们还可以安装并启用提前编译(AOT)。如果启用此功能,则将跳过下面的步骤 2 和 3,并且 .NET MAUI 将从 IL 生成目标环境的本机代码。
当 AOT 激活时,Mono 运行时用于将 .NET MAUI 代码转换为 iOS 和 Android 平台的本机代码,而 .NET CLR 用于 Windows 来实现相同的转换。
特定于平台的编译
然后,IL 代码以及引用的 BCL 程序集被编译为每个目标平台的特定于平台的二进制文件。
对于 Android,.NET MAUI 工具将 IL 代码和 XAML 以及任何必要的 .NET 库打包到 Android 包 (APK) 中。这是一个用于分发 Android 应用程序的存档文件。
对于 iOS,Apple 不允许 JIT 在 iOS 设备上运行。因此,您将无法在 iOS 上运行您的应用程序。对于Apple,请使用提前编译。
对于 Windows,IL 代码可以在运行时进行即时 (JIT) 编译,也可以使用 Windows UI 3 (WinUI 3) 库使用 .NET 本机编译器提前 (AOT) 编译为本机指令。
注意: Android 工具链(.NET for Android)和 Windows UI 3 (WinUI 3) 库是 .NET 框架(6 或更高版本)的一部分。
执行以及与 BCL 的交互
已编译的应用程序以及所需的 BCL 程序集将在相应的目标平台上部署和执行。
当应用程序在 Android 设备上启动时,.NET MAUI 运行时会将 IL 代码即时 (JIT) 编译为可以执行的本机机器代码。
在运行时,应用程序可以与 BCL 类和 API 进行交互,利用它们的功能来执行各种任务。
例如,如果您的应用程序需要读取文件,您可以利用“System.IO.File”等 BCL 类来访问文件 I/O 操作。
同样,如果您的应用程序需要网络功能,您可以使用 BCL 提供的“System.Net”命名空间中的类来处理网络任务。
.NET MAUI 渲染引擎使用 XAML 标记为 Android 平台构建本机用户界面。
在特定于平台的编译过程中,代码中指定的任何特定于平台的资源和资产(例如图像、布局和配置文件)也包含在输出中。此外,必要的特定于平台的运行时库和依赖项与应用程序捆绑在一起,以确保它在每个目标平台上正确运行。
下图说明了前面提到的步骤:
图表是使用 Draw.io 准备的
安装和设置
我们可以使用 Visual Studio Community 版本创建 .NET MAUI 项目。从此处(https://visualstudio.microsoft.com/vs/community/)下载相同的内容。请注意,我们必须安装 2022 才能使用 .NET MAUI。该链接将下载 Visual Studio 安装程序。双击该文件运行程序,在“桌面和移动”选项下选择“.NET Multi-platform UI App”(如下图红框所示)。
这将开始下载和安装构建移动应用程序所需的所有工具。设置完成后,您就可以开发移动应用程序了。这不是那么容易吗?打开Visual Studio社区版并单击“创建新项目”链接,如下所示:
将项目和解决方案名称命名为“MauiApp1”。
.NET MAUI 应用程序的项目结构
应用程序的典型结构如下所示:
让我们讨论每个文件夹及其内容。
依赖项:此文件夹包含运行和开发应用程序所需的所有必需的 SDK、NuGet 包、库和组件。
属性:它仅包含一个文件“launchSettings.json”,用于启动和调试应用程序。一般用于添加环境变量、参数等。见下面的例子:
该应用程序已配置为在端口 80 上的浏览器上运行,环境变量“ASPNETCORE_ENVIRONMENT”的值为“Development”。当我们运行应用程序时,将使用带有参数“run”的命令“dotnet”。请注意,该文件最初可能非常简单。但是,随着开发的进展,我们必须经常更新文件以更改/添加配置值。
平台
此文件夹包含每个环境的子文件夹。在这些子文件夹中,我们有特定于平台的代码、资源、依赖项和配置。这种分离允许开发人员在不同平台上自定义应用程序的行为和外观,同时维护通用功能的共享代码库。
常见用法可以包括条件编译以排除或包含特定代码段、基于平台的性能优化配置以及特定于平台的测试配置。
资源
该文件夹包含各种非代码资源,例如图像、图标、样式和本地化文件。请注意,存储在这些文件夹中的资源与平台无关。这意味着相同的资源可以在不同的目标平台(iOS、Android、Windows)上使用,而无需复制文件或编写特定于平台的代码。
现在让我们看看这些独立的根级文件的用途:
App.xaml:此文件充当定义适用于整个应用程序的共享资源、配置和行为的中心位置。它有助于确保一致性,简化初始化和清理,并允许您有效地处理重要的生命周期事件。
AppShell.xaml:此文件用于定义应用程序的导航。Shell 元素中子元素的顺序决定了页面的显示顺序。
MainPage.xaml:此文件充当应用程序初始用户界面的画布,并提供导航和用户交互的起点。您可以在这里为应用程序的用户体验定下基调,并定义用户启动应用程序时的第一印象。例如,它可以包含 StackLayout、Grid 或relativelayout 等容器来排列各种 UI 元素,例如按钮、标签、图像和其他控件。
MauiProgram.cs:该文件包含主类“MauiProgram”,它作为应用程序的启动,用于配置字体、服务和其他第三方库。
总结
从本质上讲,.NET MAUI 使开发人员能够创建针对多个平台的多功能、高效且令人惊叹的应用程序,而不会影响本机性能。其项目结构、渲染引擎以及与 .NET 生态系统的无缝集成为跨平台开发的新时代奠定了基础,邀请开发人员制作让不同设备和操作系统的用户满意的应用程序。随着技术格局的不断发展,.NET MAUI 成为现代开发人员工具包中不可或缺的工具,弥合了平台多样性和代码简单性之间的差距。文章来源:https://www.toymoban.com/diary/apps/422.html
文章来源地址https://www.toymoban.com/diary/apps/422.html
到此这篇关于一次编码,无处不在:深入探讨 .NET MAUI 的跨平台魔力的文章就介绍到这了,更多相关内容可以在右上角搜索或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!