第二章EEP MAUI APP簡介與架構\2-1 MAUI簡介

什麼是MAUI

全名為.NET Multi-platform App UI,是2020年在美國微軟開發者大會所發表的一項跨平台軟體開發技術。MAUI的前身其實就是Xamarin.Forms,主要的功能是讓開發者用C#撰寫程式碼或用XAML設計一次UI後,只要一套程式碼,就能讓它在AndroidiOS Windows Phone等平台上執行。

一開始,Xamarin 其實只是Visual Studio的其中一個外掛功能,到了2016年,微軟收購了Xamarin,並且把它的原始碼開放,直接整合在Visual Studio中,開發者在安裝Visual Studio的時候就能一起安裝Xamarin,到了2020年,微軟將這個技術平台定義成MAUI

MAUI架構

以下.NET MAUI的架構圖:

一張含有 文字, 螢幕擷取畫面, 字型, 設計 的圖片

自動產生的描述

.NET MAUI  AndroidiOSmacOS  Windows API 整合成單一API,可讓開發者直接使用。在 .NET MAUI 應用程式中,開發者撰寫的程式碼主要與 .NET MAUI API (上圖1)互動。.NET MAUI會直接呼叫原生平台API (上圖3)。此外,開發者也可以自行撰寫程式碼呼叫個別平台的API (上圖2)。但這樣就需要自行維護該平台的程式碼。

而在上述的各種平台的.NET API底下,會有跨平台的.NET BCL(Base Class Library),這個標準函式庫可提供.NET常見的基礎命名空間與類別。而Runtime介面有分兩種,一種是Mono Runtime,主要處理AndroidiOSmacOS平台,而.Net Core CLR 則是處理Windows平台。

而在編譯時各平台的做法略有不同:

1.Android:先將C#編譯成中繼語言(IL),然後在應用程式啟動時,才即時編譯(JIT)成原生程式碼。

2. iOS:C#預先編譯(AOT)為原生ARM程式碼。

3.macOS:使用Apple提供的Mac Catalyst解決方案,把iOS App轉換成可以在macOS上執行。

4. Windows:使用Windows UI 3 函式庫 (WinUI 3)建立Window的原生App

:如果要編譯iOSmacOS會需要準備Mac電腦,讓MAUI專案可以連線到Mac環境建置App

截至2022年,全球智能手機市場份額的估計數據為iOS(蘋果)大約在20%25%之間,AndroidGoogle)則佔據全球手機市場的絕大多數,估計在70%75%之間,Windows手機(微軟):市場份額相對較小,估計在1%以下。以上的市場數據供大家參考。

MAUI的優點

「一次編寫,到處執行」(Write once, run anywhereWORA),只需要撰寫一套程式碼,就可以在各平台中運行,並快速達到行動應用的需求。如果曾經有Xamarin.Form的開發經驗,開發也會更加得心應手,其他的優點如下:

1. 適合本來就擅長.Net生態圈的開發人員,無需額外學習其他平台開發的語言。

2. 用於存取原生裝置功能的跨平台API。這些API 可讓應用程式存取裝置功能,例如 GPS、加速計、電池和網路狀態。

3. 支援.NET熱重載,讓開發者可以在應用程式執行時同時修改 XAML和受控原始程式碼,然後觀察修改的結果,而不需重建應用程式。

不論目標平台為何,.NET MAUI以單一專案提供簡化且一致的跨平台開發體驗,對開發者來說確實是個不錯的選擇。


 

Top of Page