随着.NET 7的发布,MAUI也正式发布了。那么MAUI是个啥?我们先来看看官方解释:

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

关于MAUI

.NET MAUI,全称.NET Multi-platform App UI 顾名思义,就是跨平台UI框架。使用.NET MAUI,理论上使用一套代码就可以开发出可运行在 Android、iOS、macOS 和 Windows 上的应用!因为各平台存在差异,所以一套代码需要根据实际情况来编写特定的代码,有些类似于uni-app上的条件编译。

用一张图来解释下.NET MAUI可以运行在什么平台上



.NET MAUI可以运行在以下平台:

  • Android 5.0 (API 21) 或更高版本
  • iOS 11 或更高版本,使用最新版本的 Xcode
  • 使用 Mac Catalyst 的 macOS 10.15 或更高版本
  • 使用 Windows UI 库 (WinUI) 3 Windows 11和Windows 10版本 1809 或更高版本

由于MAUI Blazor 应用是基于各平台特定的 WebView 控件。如果是.NET MAUI Blazor 应用,则需要如下要求:

  • 需要 Android 7.0 (API 24) 或更高版本
  • 需要 iOS 14 或更高版本
  • 使用 Mac Catalyst 的 macOS 11 或更高版本
  • Windows 上的 Microsoft Edge WebView2
  • Android 上的 Chrome
  • iOS 和 macOS 上的 Safari

.NET MAUI 是开源的,是 Xamarin.Forms 的演变,从移动方案扩展到桌面方案,UI 控件从头开始重新生成,以确保性能和扩展性。 如果以前使用 Xamarin.Forms 生成跨平台用户界面,你会注意到与 .NET MAUI 的许多相似之处。 但也有一些差异。 使用 .NET MAUI,可以使用单个项目创建多平台应用,但可以根据需要添加特定于平台的源代码和资源。 .NET MAUI 的主要目的之一是使你能够在单个代码库中实现尽可能多的应用逻辑和 UI 布局。

MAUI的工作原理

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

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

一张图说明白.NET MAUI的体系结构

如何开发MAUI

需要 Visual Studio 2022 17.3 或更高版本,或者 Visual Studio 2022 for Mac 17.4 或更高版本。

如果要生成 iOS 的 .NET MAUI 应用,还需要:

  • 与最新版本的 Xcode 兼容的 Mac。
  • 最新版本的 Xcode
  • 苹果开发者账户

该如何选择?

如果是尝鲜或者开发windows应用,个人感觉MAUI不错。

如果是给老外开发应用,那么Flutter是不错的选择。

如果是国内的移动应用,选择uni-app就可以了。

我选择的是.NET MAUI Blazor应用,因为相对于 .NET MAUI来说,Xamarin.Forms 我不是很有兴趣,我感觉就是跟Flutter似的,不停的套娃写法属实对我不友好,所以我选择一个折中的,.NET 还凑合,HTML+CSS也还凑合。MAUI Blazor还是比较适合我的。

总结

暂无,下期开始创建第一个MAUI Blazor应用!


欢迎大家关注我的微信公众号,一起进步,一起成长

最新文章

  1. angularjs表单验证checkbox
  2. CMMI4级实践中的5个经典问题及解答
  3. Uploadify参数详解
  4. EasyARM i.mx28学习笔记——开箱试用总结
  5. POJ1050:To the max
  6. 【CODECHEF】【phollard rho + miller_rabin】The First Cube
  7. cocos2d-x创建工程批处理
  8. C#依据进程名称获取进程的句柄?
  9. Dynamics CRM:Word Template Feature 的使用和实际遇到问题解决方案
  10. 第三章:Python基础の函数和文件操作实战
  11. github 生成配置ssh 秘钥方法详解
  12. Python_环境部署及报错汇总(0)
  13. linux之用户密码破解的操作
  14. win10更新后,可以远程桌面ping也没问题,但是无法访问共享文件夹的解决方法
  15. sql查询结果存入DataTable,然后从DataTable取数据
  16. Android攻城狮学习笔记—入门篇三
  17. HTTP协议图--HTTP 报文首部之首部字段(重点分析)
  18. C/C++之Qt正则表达式
  19. phpQuery对数据信息的采集进一步学习
  20. c#代碼小集

热门文章

  1. [题解] Codeforces 468 E Permanent 折半,DP,图论
  2. python续集
  3. java的分页原理详解
  4. 斗鱼 H5 直播原理解析,它是如何省了 80% 的 CDN 流量?
  5. 微信小程序js-时间转换函数使用
  6. Android自动化测试工具调研
  7. 腾讯云短信SDK-精简版
  8. SpringBoot报错: No identifier specified for entity: XXX.XXX.XXX.XXX
  9. SQL--插入单引号值
  10. 真正“搞”懂HTTP协议02之空间穿梭