[翻譯] .NET 官宣跨平臺 UI 框架 MAUI
阿新 • • 發佈:2020-05-20
## MAUI
Build 2020 大會上,微軟終於正式公佈 .NET 上的跨平臺框架,正式版將在 .NET 6 和大家見面。
![](https://img2020.cnblogs.com/blog/1590449/202005/1590449-20200520010618518-1195416526.png)
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,一切都集中在一個地方,您可以保持生產力。
![](https://img2020.cnblogs.com/blog/1590449/202005/1590449-20200520011046690-1464340182.png)
它能做到:
- 一個針對多個平臺和裝置的專案
- 一個位置來管理字型和影象等資源
- 多目標組織您特定於平臺的程式碼
只需要掌握一種構建客戶端應用程式的方法: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中的一流功能,這將繼續發展,以幫助您高效地構建和維護生產應用程式。
```xml
```
```csharp
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的程式碼優先開發經驗。
下面是用 MAUI 編寫的 MVU 風格的基本計數器示例。
```csharp
readonly State count = 0;
[Body]
View body() => new StackLayout
{
new Label("Welcome to MAUI!"),
new Button(
() => $"You clicked {count} times.",
() => count.Value ++)
)
};
```
這種模式非常適合熱過載,如下面所示,它具有從 C# 即時熱過載的能力,新增樣式,漸變和字型都不在話下。
![](https://img2020.cnblogs.com/blog/1590449/202005/1590449-20200520011454242-339373416.gif)
### 熱過載
需要注意的是,無論是 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/