Build 2020 大會上,微軟終於正式公佈 .NET 上的跨平臺框架,正式版將在 .NET 6 和你們見面。git
MAUI 是日益流行的 Xamarin.Forms 的進化,Xamarin.Forms 已經有6年曆史了。 多年來,UPS,Ernst&Young 和 Delta 等公司一直在利用 .NET 上的 Xamarin 來推進其業務發展。它在幫助小型企業最大化其 95% 以上代碼共享的開發投資並擊敗競爭對手進入市場方面也很是成功。github
MAUI 將這一成功擴展到移動設備上,使其包含桌面設備,這是跨二者構建多平臺應用程序的最佳方法,尤爲是新設備(例如新的Surface Duo)。app
MAUI 簡化了.NET開發人員的選擇,提供了一個堆棧來支持全部現代工做負載:Android,iOS,macOS 和 Windows。 每一個平臺和 UI 控件的本機功能均可以經過一個簡單的跨平臺 API 觸手可及,您能夠在提供不妥協的用戶體驗的同時共享比之前更多的代碼。框架
MAUI 的構建考慮了開發人員的生產力,包括開發人員須要的項目系統和跨平臺工具。MAUI 將項目結構簡化爲一個針對多個平臺的項目,這意味着您只需單擊一下鼠標,即可以輕鬆地將其部署到所需的任何目標,包括臺式機,仿真器,模擬器或物理設備。mvvm
使用內置的跨平臺資源,您能夠將任何圖像,字體或翻譯文件添加到單個項目中,而且 MAUI 會自動設置本機掛鉤,以便您能夠進行編碼。工具
最後,您將始終能夠訪問本機底層操做系統 API,而且經過特定於新平臺的集成將比以往更加輕鬆。字體
不一樣平臺下,您能夠添加特定操做系統的源代碼文件並訪問本機API。ui
有了 MAUI,一切都集中在一個地方,您能夠保持生產力。編碼
它能作到:操作系統
只須要掌握一種構建客戶端應用程序的方法:MAUI,那麼全部平臺都在您的控制範圍以內。
.NET的願景的一部分是在開發人員的我的喜愛方面爲開發人員提供選擇,以便使用.NET能夠提升工做效率。
這代表您在哪一個IDE中使用Visual Studio 2019,Visual Studio for Mac甚至是Visual Studio Code。
MAUI將在全部這些版本中可用,並支持現有的MVVM和XAML模式以及未來的功能,例如使用C#甚至是Blazor的模型視圖更新(MVU)。
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."; }
此外,咱們使開發人員可以編寫流暢的C# UI並實現日益流行的「Model-View-Update」(MVU)模式。
MVU促進數據和狀態管理的單向流程,以及經過僅應用必要的更改來快速更新UI的代碼優先開發經驗。
下面是用 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 開發人員將使用他們已經瞭解和喜好的全部相同控件和 API 來開始在 .NET MAUI 中使用新項目運行。
隨着咱們逐步接近 MAUI 的發佈,爲了幫助開發人員將現有應用平穩地過渡到 .NET MAUI,咱們打算提供相似於咱們今天遷移到 .NET Core 的嘗試轉換支持和遷移指南。
咱們將在今年晚些時候開始發佈 .NET MAUI 預覽版,並於 2021年11月開始面向 .NET 6 正式發佈。MAUI 將以與 Xamarin.Forms 相同的6周節奏進行發佈。
咱們已經在GitHub上發佈了MAUI路線圖,並邀請您今天就加入咱們!
做爲咱們.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。
MAUI GitHub 倉庫:https://github.com/dotnet/maui
內容翻譯自:https://devblogs.microsoft.com/dotnet/introducing-net-multi-platform-app-ui/