Maui的學習之路 -- 開篇

Maui的學習之路 -- 開篇

想了很久我決定發一個Maui介紹做為開篇,雖然這是老生常談的話題,但是不能沒有這樣的探討(請容我水一篇)。

什么是.NET Maui

.NET Maui是微軟的一款基于.Net多平臺應用 UI (.NET MAUI)的跨平臺框架,使用 C#XAML 創建本機移動和桌面應用, 使用.NET MAUI,可以開發可從單個共享代碼庫在AndroidiOSmacOSWindows上運行的應用。

.NET Maui脫胎于Xamarin.Forms,如果有Xamarin.Forms的使用經驗,那么Maui的使用將變得非常得心應手。使用.NET MAUI,可以使用單個項目創建多平臺應用,但如有必要,可以添加特定于平臺的源代碼和資源。.NET MAUI 的主要目標是在單個代碼庫中實現盡可能多的應用邏輯和UI布局。

d4c5cd7a424cb0b1b8c36e9df92cb8e1.png

.NET Maui支持的平臺

  • Android 5.0或更高版本(API 21)

  • iOS 10或更高版本(UIKit)

  • macOS 10.13或更高版本(Mac Catalyst UIKit)

  • Windows 11Windows 10(1809)或更高版本(WinUI3 WindowsAppSdk)

  • Tizen,由三星支持(目前已經集成到工程模板中)

  • Linux,由社區支持

.NET Maui的工作原理

.NET MAUIAndroidiOSmacOSWindows API統一到單個API中,該API允許一次寫入一次運行的任何開發人員體驗,同時提供對每個本機平臺的各個方面的深入訪問。

.NET 6 提供了一系列特定于平臺的框架來創建應用:.NET for Android.NET for iOS.NET for macOS以及 Windows UI 3 (WinUI 3) 庫。這些框架都有權訪問同一個.NET 6 基類庫(BCL) 。此庫將基礎平臺的詳細信息從代碼中抽象化。BCL 依賴于.NET 運行時,為代碼提供執行環境。

對于AndroidiOSmacOS,環境由Mono實現,這是.NET 運行時的實現。在WindowsWin32 提供執行環境。

雖然BCL使在不同平臺上運行的應用能夠共享常見的業務邏輯,但各種平臺具有為應用定義用戶界面的不同方式,并且它們提供了不同的模型,用于指定用戶界面元素的通信和互操作方式。可以使用適用于AndroidiOSmacOSWinUI 3.Net單獨為每個平臺創建UI,但此方法要求為每個單獨的設備系列維護代碼庫。.NET MAUI提供了一個框架,用于為移動和桌面應用構建UI

下圖顯示了.NET MAUI應用的體系結構的高級視圖:

cb36af93c0d51ec28a30afa063040bac.png

.NET MAUI應用中,編寫主要與.NET MAUI API交互的代碼,NET MAUI直接使用本機平臺API。此外應用代碼還可以根據需要直接使用平臺?API

.NET MAUI應用可以在Window PCMac上編寫(目前需要使用vs2022 preview),并編譯為本機應用包:

  • Android使用.NET MAUI編譯的應用從C#編譯到中間語言(IL),然后在應用啟動時(JIT)編譯為本機程序集。

  • iOS使用.NET MAUI編譯的應用完全原生編譯(從C#編譯為本機ARM程序集代碼的AOT) 。

  • macOS使用.NET MAUI編譯的應用使用Mac Catalyst,這是Apple提供的一種解決方案,它可將使用UIKit生成的iOS應用引入桌面,并根據需要使用其他AppKit和平臺API對其進行擴充。

  • Windows使用.NET MAUI生成的應用使用Windows UI 3(WinUI 3)庫來創建面向Windows桌面的本機應用。

.NET Maui的其他應用方式

  • 雖然.NET Maui已經提供了對各個平臺原生的控件的封裝,但是你仍然可以使用Maui提供的自繪引擎繪制符合自己需求的控件(Microsoft.Maui.Graphics

  • 你也可以創建.NET MAUI Blazor應用,來達到和網頁一樣的使用體驗,.NET MAUI Blazor應用還需要更新的平臺特定的WebView控件,目前支持平臺如下:

    • Android 7.0(API 24)或更高版本(Chrome

    • iOS 14或更高版本(Safari

    • Mac Catalyst macOS 11或更高版本(Safari

    • indows 11Windows 10(1809)或更高版本(Edge webview2

    • Tizen(未知)

    • Linux(未知)

.NET Maui開發需要學習的技術知識:

  • 基礎:

    • .NET

    • C#

    • Xaml

    • Maui

  • 擴展:

    • Winui3 api以及Windows平臺ApiWindows

    • Android apiAndroid)(通常不需要,如果你需要調用一些硬件)

    • UIKitiOS平臺apiiOS)(通常不需要,如果你需要調用一些硬件)

    • UIKitAppkit, MacOS apiMac

    • Blazor(不是必須)

.NET Maui的優缺點

  • 優點:

    • 使用C# + .Net開發,上手簡單,升級容易,配合宇宙第一IDE工作效率不可同日而語

    • 微軟技術基本都存在共性(你可以輕松轉戰WPF

    • 大廠保證

    • 在不同的平臺使用平臺自身控件,保證原生性能

    • 配合Blazor可以實現跟網頁端一致體驗

  • 缺點:

    • 不支持win7,甚至還挑win10的版本

    • 目前雖然正式發布但還是不夠穩定

    • 因為是C#所以也許可能不如java系或者前端那么容易找到滿足的工作(大廠一般都是java

    • 微軟喜歡砍砍砍

    • 雖然保證原生,但是這也就意味著你需要對不同的平臺做相關適配(非自繪)

    • 雖然保證原生,這也意味著你需要學習平臺相關知識(控件部分行為也有不同)(當然這是所有跨平臺應用都需要學習的)

同類跨平臺開發框架:

  • QT(使用C++,我個人認為是目前真正意義上的跨平臺,甚至還支持嵌入式)(自繪)

  • Flutter(谷歌的跨平臺框架,使用Dart語言)(自繪)

  • Uno platformC# 實現方式類似Maui

  • AvaloniaC#WPF)(自繪)

  • CPFC# 國產跨平臺UI開發框架,支持龍芯)(自繪)

  • Electron (網頁技術棧方向)

相關學習鏈接:

  • Maui:.NET 多平臺應用 UI 文檔 - .NET MAUI | Microsoft Docs [1]

  • C#平臺調用:平臺調用 (P/Invoke) | Microsoft Docs[2]

  • Windows Api: pinvoke.net: memcpy (msvcrt)[3]

  • WinUI3: 創建第一個WinUI 3(Windows 應用 SDK)項目 - Windows apps | Microsoft Docs[4]

  • UIKIT:UIKit Namespace | Microsoft Docs [5]

  • AppKit: AppKit Namespace | Microsoft Docs[6]

  • Community ToolKit:使用 .NET 多平臺應用 UI (.NET MAUI) Community Toolkit入門 - .NET Community Toolkit | Microsoft Docs [7]

參考資料

[1]

.NET 多平臺應用 UI 文檔 - .NET MAUI | Microsoft Docs : https://docs.microsoft.com/zh-cn/dotnet/maui/

[2]

平臺調用 (P/Invoke) | Microsoft Docs: https://docs.microsoft.com/zh-cn/dotnet/standard/native-interop/pinvoke

[3]

pinvoke.net: memcpy (msvcrt): https://www.pinvoke.net/default.aspx/msvcrt/memcpy.html

[4]

創建第一個WinUI 3(Windows 應用 SDK)項目 - Windows apps | Microsoft Docs: https://docs.microsoft.com/zh-cn/windows/apps/winui/winui3/create-your-first-winui3-app

[5]

UIKit Namespace | Microsoft Docs : https://docs.microsoft.com/zh-cn/dotnet/api/uikit?view=xamarin-ios-sdk-12

[6]

AppKit Namespace | Microsoft Docs: https://docs.microsoft.com/zh-cn/dotnet/api/appkit?view=xamarin-mac-sdk-14

[7]

使用 .NET 多平臺應用 UI (.NET MAUI) Community Toolkit入門 - .NET Community Toolkit | Microsoft Docs : https://docs.microsoft.com/zh-cn/dotnet/communitytoolkit/maui/get-started

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/285683.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/285683.shtml
英文地址,請注明出處:http://en.pswp.cn/news/285683.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【PhotoScan精品教程】任務二:刺像控點,平差,質量報告精度檢查,像控點POS權重調配

《無人機航空攝影測量精品教程》合集目錄(Pix4d、CC、EPS、PhotoScan、Inpho) 【PhotoScan精品教程】任務一:新建工程、導入照片、設置坐標系、導入控制點(POS)、自由空三 【PhotoScan精品教程】任務二:刺像控點,平差,質量報告精度檢查,像控點POS權重調配 【PhotoScan…

互聯網架構的演變,看了好多這個講的確實清楚!

從過去的 OA、CRM、ERP 等單機即可滿足要求的系統到現代互聯網時代各大公司的分布式、微服務平臺,互聯網架構正在經歷著巨大的變革,技術也在不斷的更新迭代。 圖片來自 Pexels這也意味著眾多軟件開發者們的壓力和挑戰正在不斷的加大,這種新技…

【Inpho精品教程】Inpho簡介、安裝教程(附Inpho8安裝包下載)

《無人機航空攝影測量精品教程》合集目錄(Pix4d、CC、EPS、PhotoScan、Inpho) Inpho UASMaster是Trimble公司旗下的一款攝影測量處理軟件。本文講解Inpho簡介、安裝教程(附Inpho8安裝包下載)。 文章目錄 1. Inpho簡介2. Inpho安裝教程3. Inpho8下載地址1. Inpho簡介 1.1 主…

MAUI使用Masa blazor組件庫

上一篇(點擊閱讀)我們實現了UI在Web端(Blazor Server/Wasm)和客戶端(Windows/macOS/Android/iOS)共享,這篇我加上 Masa Blazor[2]組件庫的引用,并把前幾個月寫的時間戳轉換[3]工具加上。1. 前置知識關于Masa Blazor請點擊Masa Blazor官網[4]了解&#xf…

常用的NSLOG日志打印格式

2019獨角獸企業重金招聘Python工程師標準>>> 常用的NSLOG日志打印格式 以下是常用的LOG打印,如果有特殊,請我 ,這邊會不定期更新。 % 對象 %d, %i 整數 %u 無符整形 %f 浮點/雙字 %x, %X 二進制整數 %…

Android studio提示Android Gradle plugin requires Java 11 to run. You are currently using Java 1.8.

1、 問題 在Android studio里面運行java的lib庫,但是錯誤提示如下 Build file F:\sourceZip\app\build.gradle line: 2An exception occurred applying plugin request [id: com.android.application] > Failed to apply plugin com.android.internal.applicat…

[轉]淺析DDD(領域驅動設計)

最近在做一些微服務相關的設計,內容包括服務的劃分,Restful API的設計等。其中比較棘手的就是Service的職責劃分:如何抽象具有統一業務范疇的Model,使其模塊化,又如何高度提煉并組合多模塊,使得業務可獨立服…

【PhotoScan精品教程】任務三:生成密集點云、生成網格、生成DEM、生成DOM

《無人機航空攝影測量精品教程》合集目錄(Pix4d、CC、EPS、PhotoScan、Inpho) 【PhotoScan精品教程】任務一:新建工程、導入照片、設置坐標系、導入控制點(POS)、自由空三 【PhotoScan精品教程】任務二:刺像控點,平差,質量報告精度檢查,像控點POS權重調配 【PhotoScan…

windows環境實現批量加密文件,并創建加密文件同名(不帶后綴)的文件夾,然后把加密文件和圖片和文本放入這個文件夾。

1、 需求 我想把資源文件先加密成壓縮文件,然后同時創建每個加密壓縮文件同名的文件夾,同時需要把這個加密文件拷貝到這個同名的文件夾,然后還需要把一個圖片和一個文本文檔同時放進這個文件夾,然后在不加密壓縮這個文件夾&#…

.NET7之MiniAPI(特別篇) :Preview5優化了JWT驗證(上)

在.NET7的Preview5中,優化了asp.net core中的JWT驗證,不用像以前繁瑣了,更重要的是帶來了一組生成Token的工具,可以讓開發人員或測試人員不需登錄獲取Token,而達到測試的目的。創建項目現在來看一下怎么使用&#xff0…

iOS - UTI

一、UTI概念 1、什么是UTI Uniform Type Identifier,是字符串,格式標識符。 根據UTI,可得到相應的其他類型的格式標識符。比如public.jpeg對應于: A four-character file type code (an OSType) of JPEGA filename extension of .…

【Inpho精品教程】任務一:Inpho預處理準備(Pix4d生成未畸變圖像、Pix4d生成相機參數文件)

《無人機航空攝影測量精品教程》合集目錄(Pix4d、CC、EPS、PhotoScan、Inpho) Inpho軟對于初學者來說,可能不像pix4d、PhotoScan等那么得心應手,處理過程也稍微有些復雜。Inpho處理的是POS分離的照片,在新建工程之前,需要獲取相機參數、未畸變圖像等,而這些前期的工作一…

學習MongoDB(三) Add an Arbiter to Replica Set 集群中加入仲裁節點

Add an Arbiter to Replica Set 在集群中加入仲裁節點,當集群中主節點掛掉后負責選出新的主節點,仲裁節點也是一個mongo實力,但是它不存儲數據。 1、仲裁節點消耗很小的資源,而且不需要專用的服務器。 2、不能把仲裁節點安裝到集…

[轉]new Thread的弊端及Java四種線程池的使用

介紹new Thread的弊端及Java四種線程池的使用,對Android同樣適用。本文是基礎篇,后面會分享下線程池一些高級功能。 1、new Thread的弊端 執行一個異步任務你還只是如下new Thread嗎? new Thread(new Runnable() {Overridepublic void run() …

【Inpho精品教程】任務二:Inpho創建工程(創建項目、新建相機參數、導入照片、導入POS、生成航條、保存項目)

《無人機航空攝影測量精品教程》合集目錄(Pix4d、CC、EPS、PhotoScan、Inpho) 在任務一中,我們做了Inpho創建工程前的數據預處理工作,獲取了未畸變的圖像、相機參數、Inpho支持的POS等數據,本文在此基礎之上,創建Inpho工程,主要步驟有:創建項目、新建相機參數、導入照片…

return view詳解

1、return View(); 返回值 類型:System.Web.Mvc.ViewResult將視圖呈現給響應的 View() 結果。 注釋 View() 類的此方法重載將返回一個具有空 ViewName 屬性的 ViewResult 對象。 如果你正在編寫控制器操作的單元測試,則需為那些不采用字符串視圖名稱的單…

C語言試題九十一之寫一個程序,用公式π/4=1-1/3+1/5-1/7+...,求π的近似值,直到最后一項的絕對值小于10^-8為止。

1、題目 寫一個程序,用公式π/4=1-1/3+1/5-1/7+...,求π的近似值,直到最后一項的絕對值小于10^-8為止。 2 、溫馨提示 C語言試題匯總里可用于計算機二級C語言筆試、機試、研究生復試中C程序設計科目、幫助C語言學者打好程序基礎、C語言基礎,鍛煉您的邏輯思維和解決問…

C# 切換中英文輸入法

本文經原作者授權以原創方式二次分享,歡迎轉載、分享。原文作者:唐宋元明清原文地址:https://www.cnblogs.com/kybs0/p/10298697.htmlC# 切換中英文輸入法在界面輸入時,有時需要限定輸入法。在不自定義正則表達式或者其它輸入處理…

[轉].NET 開源項目 Polly 介紹

今天介紹一個 .NET 開源庫:Polly,它是支持 .NET Core 的,目前在 GitHub 的 Star 數量已經接近 5 千,它是一個強大且實用的 .NET 庫。 Polly 介紹 官方對 Polly 的介紹是這樣的: Polly is a .NET resilience and tran…

「 劉一哥GIS」CSDN專業技術博文專欄目錄索引

劉一哥GIS 個人簡介:劉一哥,多年研究地圖學、地理信息系統、遙感、攝影測量和GPS等應用,精通ArcGIS等軟件的應用,精通多門編程語言,擅長GIS二次開發和數據庫系統開發,具有豐富的行業經驗,致力于…