什麼是MAUI
全名為.NET
Multi-platform App UI,是2020年在美國微軟開發者大會所發表的一項跨平台軟體開發技術。MAUI的前身其實就是Xamarin.Forms,主要的功能是讓開發者用C#撰寫程式碼或用XAML設計一次UI後,只要一套程式碼,就能讓它在Android、iOS 和Windows Phone等平台上執行。
一開始,Xamarin 其實只是Visual Studio的其中一個外掛功能,到了2016年,微軟收購了Xamarin,並且把它的原始碼開放,直接整合在Visual
Studio中,開發者在安裝Visual Studio的時候就能一起安裝Xamarin,到了2020年,微軟將這個技術平台定義成MAUI。
MAUI架構
以下.NET MAUI的架構圖:
.NET MAUI 將 Android、iOS、macOS 和 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,主要處理Android、iOS、macOS平台,而.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。
註:如果要編譯iOS或macOS會需要準備Mac電腦,讓MAUI專案可以連線到Mac環境建置App。
截至2022年,全球智能手機市場份額的估計數據為iOS(蘋果)大約在20%至25%之間,Android(Google)則佔據全球手機市場的絕大多數,估計在70%至75%之間,Windows手機(微軟):市場份額相對較小,估計在1%以下。以上的市場數據供大家參考。
MAUI的優點
「一次編寫,到處執行」(Write once, run anywhere、WORA),只需要撰寫一套程式碼,就可以在各平台中運行,並快速達到行動應用的需求。如果曾經有Xamarin.Form的開發經驗,開發也會更加得心應手,其他的優點如下:
1. 適合本來就擅長.Net生態圈的開發人員,無需額外學習其他平台開發的語言。
2. 用於存取原生裝置功能的跨平台API。這些API 可讓應用程式存取裝置功能,例如 GPS、加速計、電池和網路狀態。
3. 支援.NET熱重載,讓開發者可以在應用程式執行時同時修改 XAML和受控原始程式碼,然後觀察修改的結果,而不需重建應用程式。
不論目標平台為何,.NET MAUI以單一專案提供簡化且一致的跨平台開發體驗,對開發者來說確實是個不錯的選擇。