MAUI

Build 2020 大会上,微软终于正式公布 .NET 上的跨平台框架,正式版将在 .NET 6 和大家见面。

MAUI 是日益流行的 Xamarin.Forms 的进化,Xamarin.Forms 已经有6年历史了。 多年来,UPS,Ernst&Young 和 Delta 等公司一直在利用 .NET 上的 Xamarin 来推动其业务发展。它在帮助小型企业最大化其 95% 以上代码共享的开发投资并击败竞争对手进入市场方面也非常成功。

MAUI 将这一成功扩展到移动设备上,使其包含桌面设备,这是跨两者构建多平台应用程序的最佳方法,尤其是新设备(例如新的Surface Duo)。

MAUI 简化了.NET开发人员的选择,提供了一个堆栈来支持所有现代工作负载:Android,iOS,macOS 和 Windows。 每个平台和 UI 控件的本机功能都可以通过一个简单的跨平台 API 触手可及,您可以在提供不妥协的用户体验的同时共享比以前更多的代码。

单一项目开发体验

MAUI 的构建考虑了开发人员的生产力,包括开发人员需要的项目系统和跨平台工具。MAUI 将项目结构简化为一个针对多个平台的项目,这意味着您只需单击一下鼠标,便可以轻松地将其部署到所需的任何目标,包括台式机,仿真器,模拟器或物理设备。

使用内置的跨平台资源,您可以将任何图像,字体或翻译文件添加到单个项目中,并且 MAUI 会自动设置本机挂钩,以便您可以进行编码。

最后,您将始终可以访问本机底层操作系统 API,并且通过特定于新平台的集成将比以往更加轻松。

不同平台下,您可以添加特定操作系统的源代码文件并访问本机API。

有了 MAUI,一切都集中在一个地方,您可以保持生产力。

它能做到:

  • 一个针对多个平台和设备的项目
  • 一个位置来管理字体和图像等资源
  • 多目标组织您特定于平台的代码

只需要掌握一种构建客户端应用程序的方法:MAUI,那么所有平台都在您的控制范围之内。

拥有现代 App 的开发模式

.NET的愿景的一部分是在开发人员的个人喜好方面为开发人员提供选择,以便使用.NET可以提高工作效率。

这表明您在哪个IDE中使用Visual Studio 2019,Visual Studio for Mac甚至是Visual Studio Code。

MAUI将在所有这些版本中可用,并支持现有的MVVM和XAML模式以及将来的功能,例如使用C#甚至是Blazor的模型视图更新(MVU)。

MVVM

Model-View-ViewModel(MVVM)和 XAML 是 .NET 开发人员数十年来的主要模式和实践,它们是MAUI中的一流功能,这将继续发展,以帮助您高效地构建和维护生产应用程序。

  1. <StackLayout>
  2. <Label Text="Welcome to MAUI!" />
  3. <Button Text="{Binding Text}"
  4. Command="{Binding ClickCommand}" />
  5. </StackLayout>
  1. public Command ClickCommand { get; }
  2. public string Text { get; set; } = "Click me";
  3. int count = 0;
  4. void ExecuteClickCommand ()
  5. {
  6. count++;
  7. Text = $"You clicked {count} times.";
  8. }

MVU

此外,我们使开发人员能够编写流畅的C# UI并实现日益流行的“Model-View-Update”(MVU)模式。

MVU促进数据和状态管理的单向流程,以及通过仅应用必要的更改来快速更新UI的代码优先开发经验。

下面是用 MAUI 编写的 MVU 风格的基本计数器示例。

  1. readonly State<int> count = 0;
  2. [Body]
  3. View body() => new StackLayout
  4. {
  5. new Label("Welcome to MAUI!"),
  6. new Button(
  7. () => $"You clicked {count} times.",
  8. () => count.Value ++)
  9. )
  10. };

这种模式非常适合热重载,如下面所示,它具有从 C# 即时热重载的能力,新增样式,渐变和字体都不在话下。

热重载

需要注意的是,无论是 MVVM 模式,还是 MVU 模式,都支持热重载,运行时修改代码保留状态立即生效,大大提高生产力。

从 Xamarin.Forms 过渡到 .NET MAUI

Xamarin.Forms 开发人员将使用他们已经了解和喜爱的所有相同控件和 API 来开始在 .NET MAUI 中使用新项目运行。

随着我们逐步接近 MAUI 的发布,为了帮助开发人员将现有应用平稳地过渡到 .NET MAUI,我们打算提供类似于我们今天迁移到 .NET Core 的尝试转换支持和迁移指南。

MAUI 时间线

我们将在今年晚些时候开始发布 .NET MAUI 预览版,并于 2021年11月开始面向 .NET 6 正式发布。MAUI 将以与 Xamarin.Forms 相同的6周节奏进行发布。

我们已经在GitHub上发布了MAUI路线图,并邀请您今天就加入我们!

Xamarin 和 Xamarin.Forms 的未来是什么

作为我们.NET统一的一部分,Xamarin.iOS和Xamarin.Android将作为.NET for iOS和.NET for Android成为.NET 6的一部分。

由于这些绑定是Apple和Google发行的SDK的投影,因此此处没有任何更改,但是将更新构建工具,目标框架别名和运行时框架别名,以匹配所有其他.NET 6工作负载。

我们致力于为.NET开发人员提供最新的移动SDK的最新信息,这是.NET MAUI的基础,并且始终如一。

当.NET 6发行时,我们期望以其当前形式发行Xamarin SDK的最终版本,并将提供一年的服务,那时所有的现代工作都将转移到.NET 6。

Xamarin.Forms将于今年晚些时候发布新的主要版本,并于2021年11月通过.NET 6 GA每6周继续发布次要版本和服务版本。

Xamarin.Forms的最终版本将在交付后的一年内提供服务,并且所有现代作品都将转移到.NET MAUI。

总结一下

  • 自绘组件
  • 原生 app 开发
  • 支持 MVVM 和 MVU
  • 支持代码热更
  • 跨平台
  • 伴随 .NET 6 正式发布
  • 今年年底出预览

欢迎关注 MAUI

MAUI GitHub 仓库:https://github.com/dotnet/maui

内容翻译自:https://devblogs.microsoft.com/dotnet/introducing-net-multi-platform-app-ui/

[翻译] .NET 官宣跨平台 UI 框架 MAUI的更多相关文章

  1. 微软跨平台UI框架MAUI真的要来啦

    .NET 6 preview已经上线,是时候为在BUILD 2020上宣布的新.NET Multi-platform App UI(MAUI)做准备了.对于客户端应用程序开发人员来说,这一年.NET有 ...

  2. 干!垃圾微软!发布我的Netcore跨平台UI框架 CPF

    什么鬼,我的CPF快写好了,你居然也要搞跨平台UI框架?什么Maui? 之前怎么不早说要搞跨平台UI框架呢?看到谷歌搞flutter眼红了?明年年底发布?又搞这种追别人屁股的烂事情. 什么MVU模式? ...

  3. .NET Core/.NET5/.NET6 开源项目汇总9:客户端跨平台UI框架

    系列目录     [已更新最新开发文章,点击查看详细] .NET Core 实现了跨平台,支持在 Windwos.Linux.macOS上开发与部署,但是也仅限于Web应用程序.对于Windows桌面 ...

  4. 造轮子了!NETCore跨平台UI框架,CPF

    CPF(暂时命名)(Cross platform framework),模仿WPF的框架,支持NETCore的跨平台UI框架,暂时不够完善,只用于测试,暂时只支持Windows和Mac.支持数据绑定, ...

  5. CPF C#跨平台UI框架发布安卓端预览版

    CPF的安卓端适配采用Xamarin的安卓绑定库,而不是Xamarin.Form.CPF和flutter差不多,完全由skia绘制,基本不依赖原生控件. 当前还只是预览版,不建议用在正式项目中. 可能 ...

  6. .NET Core UI框架Avalonia

    .NET Core UI框架Avalonia,Avalonia是一个基于WPF XAML的跨平台UI框架,并支持多种操作系统:Windows(.NET Framework,.NET Core),Lin ...

  7. Haxe UI框架StablexUI的使用备忘与心得(序)

    最近在手上的项目开发中,从原来的使用Sprite全手写UI,开始逐步使用StablexUI,感觉还是相当不错的,强大.高效.轻量.灵活,非常适应我当前的实际需求. 不过作为小种语言的一个小众第三方开源 ...

  8. .NET 跨平台界面框架和为什么你首先要考虑再三

    ​​​原文地址 现在用 C# 来开发​跨平台应用已经有很成熟的方案,即共用非界面代码,而每个操作系统搭配特定的用户界面代码.这个方案的好处是可以直接使用操作系统原生的控件和第三方控件,还能够和操作系统 ...

  9. 前端UI框架小汇总

    前言: 近期,小弟根据GitHub.前端社区.掘金等平台对当前流行的前端UI框架的进行了小小的整理和汇总(ps:前端UI框架的应用是通过GitHub star数,社区热度和使用范围等进行的粗略的汇总[ ...

随机推荐

  1. Linux必须会的命令---也是以前记录的,ctrl+z fg 啥的 jobs 比较实用

    fg.bg.jobs.&.ctrl + z都是跟系统任务有关的,虽然现在基本上不怎么需要用到这些命令,但学会了也是很实用的 一.& 最经常被用到 这个用在一个命令的最后,可以把这个命令 ...

  2. Junit借助Groboutils Core进行并发测试

    本文参考:http://www.voidcn.com/article/p-ybnvuffh-ke.html:转载请注明出处 junit是无法进行并发测试,但是又有需要并发测试的场景怎么办呢?此时可以借 ...

  3. wait,waitpid的学习使用

    man wait man waitpid 从中可知 函数原型 pid_t wait(int* status); pid_t waitpid(pid_t pid, int* status, int op ...

  4. linux抓包的实现

    工具: wireshark tcpdump 在这里仅仅介绍后者: 在网络问题的调试中,tcpdump应该说是一个必不可少的工具,和大部分linux下优秀工具一样,它的特点就是简单而强大. 默认情况下, ...

  5. 2019-2020-1 20199328《Linux内核原理与分析》第三周作业

    加载内核 这里可以看出有些东西隔一段时间就会打印出来 查看mymain.c 开头的一些语句不再描述 每10000次循环打印一次 这里还是针对的mymain.c文件,这里我们可以根据自己的计算机对频率进 ...

  6. 【Leetcode】104. 二叉树的最大深度

    题目 给定一个二叉树,找出其最大深度. 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数. 说明: 叶子节点是指没有子节点的节点. 示例:给定二叉树 [3,9,20,null,null,15,7 ...

  7. 《Splunk智能运维实战》——1.7 为本书加载样本数据

    本节书摘来自华章计算机<Splunk智能运维实战>一书中的第1章,第1.7节,作者 [美]乔史·戴昆(Josh Diakun),保罗R.约翰逊(Paul R. Johnson),德莱克·默 ...

  8. C++课程设计,12306模拟写起来就是这么粗暴

    这篇文章很详细,也很多希望可以好好看看!看完C++稳过! 一.12306应该具备那些功能 1.查询(一个月以内的): 1.查车票:出发地+目的地+出发时间->显示经过两站车票信息 (余票,车次信 ...

  9. P2024 食物链(种类并查集)

    P2024 [NOI2001]食物链 题目描述 动物王国中有三类动物 A,B,C,这三类动物的食物链构成了有趣的环形.A 吃 B,B吃 C,C 吃 A. 现有 N 个动物,以 1 - N 编号.每个动 ...

  10. HTML(标题/图片/链接/列表标签)

    <!DOCTYPE html> 声明 <!DOCTYPE html> 是 html5 标准网页声明,全称为 Document Type HyperText Mark-up La ...