学习.NET MAUI Blazor(二)、MAUI是个啥
随着.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应用!
学习.NET MAUI Blazor(二)、MAUI是个啥的更多相关文章
- Blazor Hybrid / MAUI 简介和实战
1. Blazor Blazor 是一个使用 .NET 生成交互式客户端 Web UI 的框架: 使用 C# 代替 JavaScript 来创建信息丰富的交互式 UI. 共享使用 .NET 编写的服务 ...
- MAUI Blazor 权限经验分享 (定位,使用相机)
入门文章 Blazor Hybrid / MAUI 简介和实战 https://www.cnblogs.com/densen2014/p/16240966.html 在 Mac 上开发 .NET MA ...
- [MAUI] 在.NET MAUI中结合Vue实现混合开发
在MAUI微软的官方方案是使用Blazor开发,但是当前市场大多数的Web项目使用Vue,React等技术构建,如果我们没法绕过已经积累的技术,用Blazor重写整个项目并不现实. Vue是当前流 ...
- 我的MYSQL学习心得(十二) 触发器
我的MYSQL学习心得(十二) 触发器 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数 ...
- css学习归纳总结(二) 转
原文地址:css学习归纳总结(二) 标签与元素 <p>标签和p元素有什么区别呢?大多数时候他们表示的是同一样东西,但仍有细微的区别.<p>.<div>等指的是HTM ...
- 【Unity Shaders】学习笔记——SurfaceShader(二)两个结构体和CG类型
[Unity Shaders]学习笔记——SurfaceShader(二)两个结构体和CG类型 转载请注明出处:http://www.cnblogs.com/-867259206/p/5596698. ...
- Linux进程间通信IPC学习笔记之同步二(SVR4 信号量)
Linux进程间通信IPC学习笔记之同步二(SVR4 信号量)
- Linux进程间通信IPC学习笔记之同步二(Posix 信号量)
Linux进程间通信IPC学习笔记之同步二(Posix 信号量)
- VSTO 学习笔记(十二)自定义公式与Ribbon
原文:VSTO 学习笔记(十二)自定义公式与Ribbon 这几天工作中在开发一个Excel插件,包含自定义公式,根据条件从数据库中查询结果.这次我们来做一个简单的测试,达到类似的目的. 即在Excel ...
- 我的MYSQL学习心得(十二)
原文:我的MYSQL学习心得(十二) 我的MYSQL学习心得(十二) 我的MYSQL学习心得(一) 我的MYSQL学习心得(二) 我的MYSQL学习心得(三) 我的MYSQL学习心得(四) 我的MYS ...
随机推荐
- Explain:你见过这样的Sql吗?
上一篇我们讲到Mysql索引底层逻辑,为了了解后续sql知识,我们还是需要先学习一下相关"工具"得使用 一.Explain介绍 EXPLAIN是MySQl必不可少的一个分析工具,主 ...
- JavaScript事件驱动
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- [Mysql] 页结构
什么是页? 页是InnoDB中管理数据的最小单元 页与页之间是通过一个双向链表连接起来. 页的组成 FileHeader 上一页下一页的指针 FIL_PAGE_PREV FIL_PAGE_NEXT P ...
- API接口笔记
1.基类 定义返回信息 protected $user; //用户表 protected $token; //用户token protected $isSuccess = FALSE; //状态是 ...
- Linux实战笔记_ 如何远程访问Kali?
注:基于2018年安装的kali版本. 启动ssh服务 /etc/init.d/ssh start 或 service ssh start #启动ssh服务 /etc/init.d/ssh statu ...
- 齐博x1频道的二次开发入门讲解
要进行频道的二次开发,首先我们要先了解一下频道的目录结构,如下图最基本的几个目录admin 后台文件存放目录index 前台文件存放目录member 会员中心存放目录model 数据表模型目录trai ...
- 如何实现一个SQL解析器
作者:vivo 互联网搜索团队- Deng Jie 一.背景 随着技术的不断的发展,在大数据领域出现了越来越多的技术框架.而为了降低大数据的学习成本和难度,越来越多的大数据技术和应用开始支持SQL进 ...
- MySQL 全局锁、表级锁、行级锁,你搞清楚了吗?
大家好,我是小林. 最近重新补充了<MySQL 有哪些锁>文章内容: 增加记录锁.间隙锁.net-key 锁 增加插入意向锁 增加自增锁为 innodb_autoinc_lock_mode ...
- PMM实现监控Mysql-MGR
一.docker安装PMM服务端 1.安装yum配置单元 # 如果已安装,略过此步 yum install -y yum-utils #yum配置单元 2.配置docker阿里云yum源 #配置doc ...
- JVM堆内存转储
在发生内存溢出错误 java.lang.OutOfMemoryError 时, JVM自动执行堆内存转储,以方便事后进行排查和分析. JVM提供了一个命令行启动参数 HeapDumpOnOutOfMe ...