本文内容来自微软开发博客:https://devblogs.microsoft.com/dotnet/introducing-net-multi-platform-app-ui/

转载请注明来源,公众号[开发者精选资讯]

在微软2020年Build大会这天,Scott Hunter 在博客上发布了这篇文章,这篇文章中祭出微软重磅战略性UI框架:MAUI,接下来是翻译,若要看原文,点击上面的链接即可。

你可以用.NET构建任何东西,这是成千上万的开发人员选择.NET作为其职业生涯开发平台,而公司为其业务进行投资的主要原因之一。使用.NET 5,我们开始了统一.NET平台的旅程,将.NET Core和Mono / Xamarin集成在一个基类库(BCL)和工具链(SDK)中。

在考虑统一的.NET中建筑设备应用程序的外观时,我们看到跨多个平台使用的许多设备,从Android 和iOS到Windows和macOS。为了满足这一需求,我们很高兴地宣布一个新的一流的UI框架,可以做到这一点:.NET多平台应用UI框架,亲切地叫他MAUI。

让我们向您介绍.NET MAUI是什么,MAUI单个项目开发人员的经验,现代化的开发模式以及对未来的展望。

什么是.NET MAUI

MAUI是日益流行的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方法,并且所有平台都在您的范围之内。今天,Scott Hanselman和我将在Build,《通往一个.NET的旅程》中进行实际演示。

现代应用程式模式

.NET的愿景的一部分是为开发人员提供个人喜好方面的选择,以便您可以使用.NET来提高工作效率。这表明您使用的是哪个IDE,无论是Visual Studio 2019,Visual Studio for Mac还是Visual Studio Code。MAUI将在所有这些版本中可用,并支持现有的MVVM和XAML模式以及将来的功能,例如带有C#的模型视图更新(MVU)甚至Blazor。

MVVM

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

<StackLayout>
<Label Text="Welcome to MAUI!" />
<Button Text="{Binding Text}"
Command="{Binding ClickCommand}" />
</StackLayout>

public Command ClickCommand { get; } public string Text { get; set; } = "Click me"; int count = 0; void ExecuteClickCommand ()
{
count++;
Text = $"You clicked {count} times.";
}

MVU

此外,我们使开发人员能够编写流畅的C#UI并实现日益流行的“Model-View-Update”(MVU)模式。MVU促进数据和状态管理的单向流程,以及通过仅应用必要的更改即可快速更新UI的代码优先开发经验。有关以MVU为模式的更多信息,请查阅Elm编程指南和Thomas Bandt的博客

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

readonly State<int> count = 0;

[Body]
View body() => new StackLayout
{
new Label("Welcome to MAUI!"),
new Button(
() => $"You clicked {count} times.",
() => count.Value ++)
)
};

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

MVVM和MVU都具有本机应用程序的性能和平台精确度。开发人员将能够选择最适合其偏好和用例的样式。

从Xamarin.Forms过渡到.NET MAUI

Xamarin.Forms开发人员将使用他们已经了解和喜爱的所有相同控件和API来开始在.NET MAUI中使用新项目运行。随着我们接近MAUI的发布,为了帮助开发人员将现有应用平稳过渡到.NET MAUI,我们打算提供与我们今天迁移到.NET Core相似的尝试转换支持和迁移指南。

.NET MAUI时间轴

我们将在今年晚些时候开始发布.NET MAUI预览版,并于2021年11月开始提供.NET 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。

立即参与

加入我们全新的存储库dotnet / maui,踏上通往MAUI的旅程。一定要star并观察以获取最新进度通知,然后加入有关讨论我们如何发展代码库的提案讨论。这是将Xamarin和Xamarin.Forms直接连接到.NET核心中的漫长旅程的开始,开源这个框架我们和您一样兴奋。

github:https://github.com/dotnet/maui

重磅消息:微软发布多平台应用UI框架 MAUI,网友直呼:牛x的更多相关文章

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

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

  2. [翻译] .NET 官宣跨平台 UI 框架 MAUI

    MAUI Build 2020 大会上,微软终于正式公布 .NET 上的跨平台框架,正式版将在 .NET 6 和大家见面. MAUI 是日益流行的 Xamarin.Forms 的进化,Xamarin. ...

  3. 重磅!微软发布 Visual Studio Online:Web 版 VS Code + 云开发环境

    北京时间 2019 年 11 月 4 日,在 Microsoft Ignite 2019 大会上,微软正式发布了 Visual Studio Online (VS Online)公开预览版! 如今发布 ...

  4. 重磅!微软发布 vscode.dev,把 VS Code 带入浏览器!

    早在 2019 年,当.dev顶级域名开放时,我们赶紧注册了vscode.dev.像许多购买.dev域名的人一样,我们不知道我们将用它做啥.反正,也占个坑吧! 将 VS Code 带入浏览器 直到今天 ...

  5. Flutter 1.5 发布,正式成为全平台 UI 框架!

    一. 序 在 Google I/O 2019 上,Dart 团队宣布推出新的 Flutter 稳定版本 1.5,这是 Flutter 迄今为止最大的一次版本发布. 伴随着 Flutter 1.5 的发 ...

  6. 不懂前端的程序员不是好美工——UI框架metronic使用教程——程序员视角

    本着不懂前端的程序员不是好美工的观点,所以作为一个仅懂一点前端的程序员,为了成为一个好美工,所以只能用些取巧的方法伪装一下. metronic一个基于bootstrap的响应式的后台管理平台的UI框架 ...

  7. jQuery ui 框架

    jQuery ui框架很多,除了官方提供的jquery UI(如果你还不知道什么是jQuery UI,请看下载了jquery ui后如何使用),还有很多第三方提供的ui框架,因官方提供的jquery ...

  8. 推荐几个常用的jquery ui 框架

    jQuery ui框架很多,除了官方提供的jquery UI(如果你还不知道什么是jQuery UI,请看下载了jquery ui后如何使用),还有很多第三方提供的ui框架,因官方提供的jquery ...

  9. H+ 后台主题UI框架

    十年河东,十年河西,莫欺少年穷 学无止境,精益求精 今天得到了一个非常完美的后端管理系统框架:H+ 后台主题UI框架 H+ 后台主题UI框架 H+是一个完全响应式,基于Bootstrap3.3.6最新 ...

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

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

随机推荐

  1. [渗透测试] HTB_Surveillance WriteUp [上]

     靶机:Surveillance (from Hack The Box)  工具:Kali Linux  目标:拿到user和root的一串32位hex字符串 ## 配置hosts 环境启动后,要设置 ...

  2. 鸿蒙HarmonyOS实战-Stage模型(进程模型)

    前言 进程是计算机中运行的程序的实例.它是操作系统对正在执行的程序的一种抽象概念.每个进程都有自己的独立内存空间.运行状态和执行上下文.进程可以包含一个或多个线程,每个线程可以独立执行一部分任务.操作 ...

  3. win11如何调解屏幕亮度【win10刚刚升级win11】?

    打开电脑后鼠标右键,点击个性化 点击系统 点击屏幕亮度 滑动按钮,调解屏幕亮度即可

  4. .NET C#程序启动闪退,在安装或者程序文件下能正常运行,但通过路径却无法运行

    .NET C#程序启动闪退,目录导致的问题 这是第2次踩这个坑了,很小的编程细节,容易忽略,所以写个博客,分享给大家. 1.第一次坑:是windows 系统把程序运行成服务,找不到配置文件,原因是以服 ...

  5. win10 chrome 百分浏览器 centbrowser 收藏夹栏字体突然变小

    win10 chrome 百分浏览器 centbrowser 收藏夹栏字体突然变小 解决方法: 在"开始" >"设置" >"轻松使用&qu ...

  6. restful接口返回JSONObject和父类抽象实现类设计,请求头获取sign和支付宝RSA签名验签工具类方法

    restful接口返回JSONObject和父类抽象实现类设计,请求头获取sign和支付宝RSA签名验签工具类方法 1.JSONObject可以通用数据的灵活性,类似Map数据,数据字段不清晰.具体返 ...

  7. 前端Uncaught (in promise) 的解决方法及原因

    问题:在Vue项目中使用axios调用一个第三方的接口时,前端无法获取到接口返回值,检查控制台Network发现接口请求已经正常发出并且有数据返回,但是控制台Console报了这么一个错误 上图可以看 ...

  8. python 注册nacos 进行接口规范定义

    背景: 一般场景 python服务经常作为java下游的 算法服务或者 数据处理服务 但是使用http 去调用比较不灵活,通过注册到nacos上进行微服务调用才是比较爽的 1.定义feginapi的接 ...

  9. 深入了解身份认证和授权机制,看看API请求到底发生了什么?

    前段时间写了一篇基于.NetCore环境使用IdentityServer4为API接口鉴权的文章,更多的是从快速上手的角度描述了IdentityServer4的使用.后续使用过程中,自己有了一些其他想 ...

  10. 苹果应用商店上传应用卡在了“Authenticating with the iTunes Store”

    在终端中依次运行下面代码 cd ~ mv .itmstransporter/ .old_itmstransporter/ "/Applications/Xcode.app/Contents/ ...