.NET 6 preview曾经上线,是时候为在BUILD 2020上发表的新.NET Multi-platform App UI(MAUI)做筹备了。对于客户端应用程序开发人员来说,这一年.NET有很多令人兴奋的变动。让咱们回顾这些亮点,并看看明年可能会产生些什么。
.NET 6的布局和我的项目执行是公开进行的,咱们有一个很棒的网站,它集中展示了整个.NET的GitHub里程碑和用户故事。您能够拜访themesof.net并在Xamarin中搜寻以查看概览。
.NET 6和挪动SDK
该版本的外围是将Xamarin SDK对立到.NET。Xamarin始终是.NET的一部分,但当初它已作为外围的内容公布,与其余部件(如Blazor)共享雷同的基类库,并采纳了现代化的SDK我的项目零碎格调来提供统一的工具体验。Xamarin不再是其余相似.NET或对.NET有依赖性的货色,而是.NET自身。文档和产品页面中统一的命名形式降使这一点将更加清晰。
Xamarin.Android和Xamarin.iOS当初是您能够通过.NET开发波及到的额定的平台对象,因而咱们将其称为.NET for Android 以及.NET for iOS。这些SDK自身是.NET别离与Google和Apple的本地SDK的绑定,因而它们的API并没有被重新命名。
.NET Multi-platform App UI (MAUI)
Xamarin.Forms是实用于Android,iOS和UWP的跨平台挪动优先框架,.NET MAUI是Xamarin.Forms的演进。咱们领有7年的为客户提供技术支持的教训,服务对象从独立开发人员到一些全球性的大公司,咱们正在改善产品的外围性能,放慢UI渲染,投资研发统一的零碎设计模式,并从挪动端扩大到桌面端。
对于Xamarin.Forms的客户,您能够把MAUI当成您当初所理解的Xamarin.Forms下一个次要版本。对于刚开始应用.NET进行多平台开发的开发人员,您能够先理解一下咱们以后为您提供哪些服务。
品质
自2020年年中以来,外围团队始终专一于产品中影响较大的问题,并设计了新的控制结构体系来更好地服务于将来。Xamarin.Forms 5.0是.NET MAUI之前的最初一个次要性能版本,之后的版本公布将仅蕴含bug修复。Xamarin.Forms将继续更新直到2022年11月。
此次版本公布中并不蕴含新控件。咱们把重点放在产品质量上。咱们与您一样对新性能感到兴奋,为此,咱们非常高兴看到与Xamarin.Forms 5.0一起公布的Xamarin Community Toolkit 1.0取得了如此踊跃反馈。
当您查看咱们的github库dotnet / maui时,您会发现文件组织更加精简,与Xamarin.Forms相比,该组织形式利用了多指标构造并具备更加统一的命名形式。咱们心愿这样可能更不便贡献者们找到想要扭转的对象。开发流动正在xamarin / Xamarin.Forms库的main-handler分支沉闷地进行着,这些更新会被同步到DOTNET /MAUI中去。
性能
应用程序启动和UI响应工夫是应用程序性能至关重要的两个局部。为帮忙定位这里可能呈现的性能问题,咱们在AOT,启动跟踪和疾速渲染器方面有很大的改善。.NET MAUI除了能从.NET 6自身取得性能晋升外,咱们还有几个能显著进步应用程序性能的改变!
.NET MAUI中新的handler体系结构打消了视图嵌套,缩小了出现视图所需的UI控件数量。它还从根本上将平台控件与框架自身解耦。在Xamarin.Forms中,每个渲染器都有对跨平台元素的援用,并且通常依赖于INotifyPropertyChanged工作。.NET MAUI并未应用这些渲染器,而是引入了一种称为handler的新模式。
当初,框架和平台之间的关系倒置了,平台控件所须要做的就是解决框架的需要。这不仅进步了效率,而且更容易扩大或重写。须要创立自定义渲染器或成果的日子曾经一去不复返了(咱们依然会确保自定义渲染器和成果是能够应用的)。
新的构造还使平台handler更适宜被其余框架(如Fabulous)和翻新我的项目(如Comet和Blazor)重用。咱们始终着眼于将来!
设计
针对多个平台的应用程序的设计需要和多年前相比曾经产生了很大变动。在Xamarin.Forms成立之初,大多数客户都心愿他们的Android利用看起来十分像Android,而iOS利用看起来十分像iOS。咱们曾经在Xamarin.Forms中引入了越来越多的款式和控件,并让这些款式和控件在各个平台上看起来都雷同,另外在iOS咱们还增加了Visual control API以及Material Design组件,来让您能够和在Android上领有一样的用户体验。这些致力是满足客户向咱们展现其需要的形式的一部分,并且在.NET MAUI中,咱们奠定了进一步倒退的根底。
咱们将通过Fluent UI和Material Design的款式启用full-app的应用程序主题,在现有的控件上应用必要的款式API和Visual states,并尽可能减少对控件模板的反对 。
在试验方面,咱们还启动了一个新的Visual策略,该策略联合了native控件和可绘制控件。往年晚些时候,咱们将有更多信息能够分享。对于须要1:1跨平台设计并心愿取得更好的性能,但又须要native平台反对的客户,这会很敌对的。
平台
.NET MAUI在.NET 6中涵括了Android,iOS,macOS和Windows。除此之外,咱们也正在和Blazor团队一起单干,.NET 6中囊括Blazor 桌面开发。
Xamarin起源于挪动开发畛域,这当然也是大多数客户应用它的中央。之后咱们退出Xamarin.Mac利用绑定到Appkit的工具来实现Apple桌面平台开发。.NET 6当初将其称为.NET for macOS,然而,咱们看到Apple在macOS桌面开发方面朝着不一样的方向倒退,咱们心愿确保为您提供最佳体验。为此,咱们正在引入对Mac Catalyst的.NET反对,这是苹果公司提供的解决方案,可将您应用UIKit构建的iOS应用程序带到桌面,并依据须要通过其余AppKit和平台API进行扩大。您能够浏览Apple的多个第一方应用程序来亲自体验。.NET MAUI将也囊括这一办法。
一开始在UWP以部署到Windows Mobile为指标时,Xamarin.Forms为UWP增加了一个以mobile为核心的实现。在.NET MAUI中,咱们通过WinUI 3 Desktop带来了针对桌面的更弱小反对,这是咱们Windows团队合作伙伴构建杰出应用程序的最新实现。当波及到与.NET MAUI相干的UWP和WinUI时,咱们被问的最多问题是在.NET MAUI中XAML会是什么样的状态的。因为.NET MAUI控件是多平台的,而不仅仅局限于Windows控件,并且因为咱们领有大量的Xamarin.Forms的客户,咱们心愿在.NET MAUI中能够让您有统一的体验。
Single Project
咱们通过.NET MAUI发表的最令人兴奋的事件之一就是Single Project体验。咱们发现,开发人员集中注意力于.NET Standard我的项目中开发时效率最高,而不是在Android,iOS,macOS和Windows我的项目之间来回跳转的时候。
作为此体验的一部分,咱们正在对立许多治理形式,例如字体和图像治理,并缩小对治理多个平台我的项目的复杂性的依赖。对于喜爱或须要多个平台我的项目的开发人员,它仍也是任然反对的!
.NET热重载
过来几年中,XAML Hot Reload的引入大大节俭了.NET开发人员的工夫。在XAML中进行的改变会推送到正在运行的应用程序中,从而防止了繁琐的构建和部署周期,帮忙开发人员更好地集中注意力于利用程序开发中。在.NET 6中,咱们将其扩大到了C#,也引入到其余的工作负载中。咱们急不可待地想要您在往年下半年体验到这一改变。
为.NET 6和.NET MAUI做好筹备
我心愿您对以上亮点有趣味。它们间接来源于与您这样的客户的交谈,并且咱们曾经在.NET 6中进步了这些主题的优先级。如果您没有看到想要的更新,请通知咱们,咱们不久以后将开始布局.NET 7及更高的版本。
为了帮忙您做好筹备工作,上面是一些一些常见问题和回复。
Q1:我应该明天应用Xamarin.Forms ,还是期待.NET MAUI?
您能够间接开始应用Xamarin.Forms !所有就绪当前咱们会提供迁徙到.NET MAUI的办法。
Q2:从Xamarin.Forms迁徙到MAUI要做什么?
首先,您不须要重写应用程序。第一步您须要更新我的项目和解决方案,以应用规范的SDK。而后,更新Xamarin.Forms的命名空间和NuGet包。因为这是一个次要版本的更新,此时您我的项目中任何过期的API应该都曾经被更新了。仅此而已!
而后,您能够抉择是否将自定义渲染器迁徙到新的handler体系中,以获取所有可能的性能晋升。这能够依照您本人的步调进行。
迁徙之前,您能够先在一个新我的项目中摸索.NET MAUI。
Q3:我的自定义渲染器能够工作吗?
咱们提供使渲染器可能与新的handler同时工作的适配器,然而,咱们建议您更新成handler以获取性能晋升。另外,应用handler时要保护的代码也少得多。
Q4:VS Code,Comet MVU和Blazor Mobile Bindings当初怎么样了?
目前它们都还是试验我的项目,咱们会持续迭代:
- Comet MVU
- Blazor Mobile Bindings