本文內容來自微軟開發博客: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