[翻譯] .NET 官宣跨平臺 UI 框架 MAUI

来源:https://www.cnblogs.com/hez2010/archive/2020/05/20/12920729.html
-Advertisement-
Play Games

MAUI Build 2020 大會上,微軟終於正式公佈 .NET 上的跨平臺框架,正式版將在 .NET 6 和大家見面。 MAUI 是日益流行的 Xamarin.Forms 的進化,Xamarin.Forms 已經有6年曆史了。 多年來,UPS,Ernst&Young 和 Delta 等公司一直在 ...


MAUI

Build 2020 大會上,微軟終於正式公佈 .NET 上的跨平臺框架,正式版將在 .NET 6 和大家見面。

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,一切都集中在一個地方,您可以保持生產力。

它能做到:

  • 一個針對多個平臺和設備的項目
  • 一個位置來管理字體和圖像等資源
  • 多目標組織您特定於平臺的代碼

只需要掌握一種構建客戶端應用程式的方法: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中的一流功能,這將繼續發展,以幫助您高效地構建和維護生產應用程式。

<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的代碼優先開發經驗。

下麵是用 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 的嘗試轉換支持和遷移指南。

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/


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 對於要有扎實的java基礎,集合是必須掌握的,而且精讀這部分的源碼很有用,也很有必要。而LinkedList是在java.util包下,和java.io,java.lang都是比較常用,而且比較簡單。看看它們的源碼有助於鍛煉我們看源碼的感覺,也瞭解一下大神們寫代碼的風格。看這些源碼的目的,更多是為了 ...
  • 自己在寫文章的時候,也有到處去逛一逛,漸漸發現了一些有意思的事,經常會有人用同樣的評論到處刷,不知道是為了加沒什麼用的積分,還是純粹為了表達樓主好人。那麼問題來了,這種無聊的事情當然最好能夠自動化咯,自己也來試了一把,純屬娛樂。 大家在學python的時候肯定會遇到很多難題,以及對於新技術的追求,這 ...
  • 引言 好久沒有寫博客了,近期準備把 源碼啃一遍。在這之前本想直接看源碼,但是看到後面發現其實效率不高, 有些概念還是有必要回頭再細啃的,特別是其線程模型以及 的概念。 當然在開始之前還是有務必要對 要有清晰準確的認識。 傳送門 "" 事件迴圈機制(EventLoop) Netty線程模型中一個非常重 ...
  • 主要是使用了form組件 <html lang="cn"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <me ...
  • 受人所托,需要對他們的產品進行反爬測試,所以就有了以下內容,不過,我知道,針對這方面的文章太多了,是真的多,而且好早就有了,但是目前為止,很多app的防護基本也還是用的ssl pinning檢測證書。 因為,目前的app要嘛不用ssl,要嘛用就是一般的ssl,基本就是在手機上裝個相關軟體 的代理即... ...
  • 作者:超大隻烏龜 https://segmentfault.com/a/1190000022184751 總所周知 HashMap 是面試中經常問到的一個知識點,也是判斷一個候選人基礎是否扎實的標準之一,因為通過 "HashMap" 可以引出很多知識點,比如數據結構(數組、鏈表、紅黑樹)、 "equ ...
  • 看一下效果圖: InfulxDb 官方網站:https://portal.influxdata.com/downloads/ docker 安裝influxdb資料庫 chronograf可視化工具(非必要,只是可以web訪問,類似PHPMySQL) 啟動influxdb,其中 v參數表示將dock ...
  • 效果圖: 廢話 如何知道你寫的爬蟲有沒有正常運行,運行了多長時間,請求了多少個網頁,抓到了多少條數據呢?官方其實就提供了一個字典就包含一些抓取的相關信息:crawler.stats.get_stats(),crawler是scrapy中的一個組件。你可以在很多組件中訪問他,比如包含from_craw ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...