随着.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是个啥的更多相关文章

  1. Blazor Hybrid / MAUI 简介和实战

    1. Blazor Blazor 是一个使用 .NET 生成交互式客户端 Web UI 的框架: 使用 C# 代替 JavaScript 来创建信息丰富的交互式 UI. 共享使用 .NET 编写的服务 ...

  2. MAUI Blazor 权限经验分享 (定位,使用相机)

    入门文章 Blazor Hybrid / MAUI 简介和实战 https://www.cnblogs.com/densen2014/p/16240966.html 在 Mac 上开发 .NET MA ...

  3. [MAUI] 在.NET MAUI中结合Vue实现混合开发

    ​ 在MAUI微软的官方方案是使用Blazor开发,但是当前市场大多数的Web项目使用Vue,React等技术构建,如果我们没法绕过已经积累的技术,用Blazor重写整个项目并不现实. Vue是当前流 ...

  4. 我的MYSQL学习心得(十二) 触发器

    我的MYSQL学习心得(十二) 触发器 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数 ...

  5. css学习归纳总结(二) 转

    原文地址:css学习归纳总结(二) 标签与元素 <p>标签和p元素有什么区别呢?大多数时候他们表示的是同一样东西,但仍有细微的区别.<p>.<div>等指的是HTM ...

  6. 【Unity Shaders】学习笔记——SurfaceShader(二)两个结构体和CG类型

    [Unity Shaders]学习笔记——SurfaceShader(二)两个结构体和CG类型 转载请注明出处:http://www.cnblogs.com/-867259206/p/5596698. ...

  7. Linux进程间通信IPC学习笔记之同步二(SVR4 信号量)

    Linux进程间通信IPC学习笔记之同步二(SVR4 信号量)

  8. Linux进程间通信IPC学习笔记之同步二(Posix 信号量)

    Linux进程间通信IPC学习笔记之同步二(Posix 信号量)

  9. VSTO 学习笔记(十二)自定义公式与Ribbon

    原文:VSTO 学习笔记(十二)自定义公式与Ribbon 这几天工作中在开发一个Excel插件,包含自定义公式,根据条件从数据库中查询结果.这次我们来做一个简单的测试,达到类似的目的. 即在Excel ...

  10. 我的MYSQL学习心得(十二)

    原文:我的MYSQL学习心得(十二) 我的MYSQL学习心得(十二) 我的MYSQL学习心得(一) 我的MYSQL学习心得(二) 我的MYSQL学习心得(三) 我的MYSQL学习心得(四) 我的MYS ...

随机推荐

  1. Dapr v1.9.0 版本已发布

    Dapr是一套开源.可移植的事件驱动型运行时,允许开发人员轻松立足云端与边缘位置运行弹性.微服务.无状态以及有状态等应用程序类型.Dapr能够确保开发人员专注于编写业务逻辑,而不必分神于解决分布式系统 ...

  2. Docker之介绍与安装

    Docker 说明 本章,我们主要从Docker简介.Docker中几个核心概念和Docker安装这几个方面对Docker进行介绍! 1. Docker 简介 1.1. 什么是 Docker Dock ...

  3. Linux进程间通信(二)

    信号 信号的概念 信号是Linux进程间通信的最古老的一种方式.信号是软件中断,是一种异步通信的方式.信号可以导致一个正在运行的进程被另一个正在运行的异步进程中断,转而处理某个突发事件. 一旦产生信号 ...

  4. 京东云开发者|京东云RDS数据迁移常见场景攻略

    云时代已经来临,云上很多场景下都需要数据的迁移.备份和流转,各大云厂商也大都提供了自己的迁移工具.本文主要介绍京东云数据库为解决用户数据迁移的常见场景所提供的解决方案. 场景一:数据迁移上云 数据迁移 ...

  5. JS逆向实战6-- x轴 y轴 过点触验证码

    点触验证码是一种常见的反爬手段 解决方案有两种:一种是直接解决,这需要深度学习机器学习等图像处理技术,以大量的数据训练识别模型,最终达到模型足矣识别图片中的文字提示和应该点击的区域之间的对应关系. 这 ...

  6. 华为开发者大会2022:HMS Core 3D建模服务再升级,万物皆可驱动

    11月4日,HDC2022华为开发者大会在东莞松山湖举办.在本次大会的HMS Core创新图形能力分论坛中,HMS Core重点介绍了其在3D技术领域的创新应用方向,其中3D建模服务展示了创新的自动骨 ...

  7. 1.python基础使用

    1.git简介 git是一个免费的开源的分布式版本控制系统,可以快速高效的处理从小型到大型项目的所有事务 在实际工作中可以保留项目的所有版本,可以快速的实现版本的回滚和修改 git整体可以分为4个区域 ...

  8. 【题解】CF45I TCMCF+++

    题面传送门 题目描述 有 \(n\) 个数 \(a_i\) 请你从中至少选出一个数,使它们的乘积最大 解决思路 对于正数,对答案一定有贡献(正数越乘越大),所以输入正数时直接输出即可. 对于负数,如果 ...

  9. 嵌入式-C语言基础:数组作为参数传递需要注意的问题

    #include <stdio.h> void printData(int data) { printf("%d\n",data); } //形参中不存在数组的概念,即 ...

  10. GO语言内存操作指导—unsafe的使用

    在unsafe包里面,官方的说明是:A uintptr is an integer, not a reference.Converting a Pointer to a uintptr creates ...