什麼是 .NET MAUI?
.NET 多平台應用程式 UI (.NET MAUI) 是一種跨平台架構,可使用 C# 和 XAML 建立原生行動和傳統型應用程式。
.NET MAUI 可讓您從單一共用程式碼基底,開發可在 Android、iOS、macOS 和 Windows 上執行的應用程式。
.NET MAUI 是開放原始碼,是 Xamarin.Forms 的演進,從行動裝置延伸至桌面案例,UI 控件會從頭開始重建,以提升效能和擴充性。 如果您先前已使用 Xamarin.Forms 來建置跨平臺使用者介面,您會注意到 .NET MAUI 有許多相似之處。 不過,也有一些差異。 透過 .NET MAUI,可使用單一專案建立多重平台應用程式,但您可視需要新增平台專屬的原始程式碼。 .NET MAUI 的主要目的之一是讓您在單一程式碼基底中,盡可能實作最多的應用程式邏輯和 UI 版面配置。
.NET MAUI 的身分
.NET MAUI 適用於想要:
- 從 Visual Studio 中的單一共享程式碼基底,以 XAML 和 C# 撰寫跨平台應用程式。
- 跨平台共用 UI 版面配置和設計。
- 跨平臺共用程式代碼、測試和商業規則。
.NET MAUI 的運作方式
.NET MAUI 將 Android、iOS、macOS 和 Windows API 整合成單一 API,以提供「撰寫一次,到處執行」的開發人員體驗,還支援深入存取每個原生平台的所有層面。
.NET 6 或更新版本提供一系列平臺特定架構來建立應用程式:.NET for Android、適用於 iOS 的 .NET、適用於 Mac Catalyst 的 .NET,以及 Windows UI 3 (WinUI 3) 連結庫。 這些架構都可以存取相同的 .NET 基類庫 (BCL)。 此連結庫會將基礎平臺的詳細數據從程式碼中抽象化。 BCL 取決於 .NET 執行階段,以提供程式碼的執行環境。 針對 Android、iOS 和 macOS,環境是由 Mono 實作,這是 .NET 運行時間的實作。 在 Windows 上,.NET CoreCLR 提供執行環境。
雖然 BCL 可讓在不同平臺上執行的應用程式共用常見的商業規則,但各種平臺有不同的定義應用程式使用者介面的方式,並提供不同的模型來指定使用者介面的元素如何通訊和互操作。 您可以使用適當的平臺特定架構個別製作每個平臺的 UI(適用於 Android、適用於 iOS 的 .NET、適用於 Mac Catalyst 的 .NET 或 WinUI 3),但此方法接著會要求您為每個個別的裝置系列維護程式代碼基底。
.NET MAUI 提供單一架構來建置行動和傳統型應用程式的 UI。 下圖顯示 .NET MAUI 應用程式架構的高階檢視:
在 .NET MAUI 應用程式中,您可以撰寫主要與 .NET MAUI 控制件和 API 層互動的程式代碼(1)。 然後,此層會直接取用原生平臺 API (3)。 此外,應用程式程式代碼可能視需要直接練習平臺 API(2)。
.NET MAUI 應用程式可以在 PC 或 Mac 上撰寫,並編譯成原生應用程式套件:
- 使用 .NET MAUI 從 C# 編譯為中繼語言 (IL) 所建置的 Android 應用程式,然後在應用程式啟動時編譯為原生元件。
- 使用 .NET MAUI 建置的 iOS 應用程式完全是從 C# 編譯成原生 ARM 元件程式碼的預先 (AOT)。
- 使用 .NET MAUI 建置的 macOS 應用程式會使用 Mac Catalyst,這是 Apple 的解決方案,可將以 UIKit 建置的 iOS 應用程式帶入桌面,並視需要使用額外的 AppKit 和平臺 API 加以增強。
- 使用 .NET MAUI 建置的 Windows 應用程式會使用 Windows UI 3 (WinUI 3) 連結庫來建立以 Windows 桌面為目標的原生應用程式。 如需 WinUI 3 的詳細資訊,請參閱 Windows UI 連結庫。
注意
建置 iOS 和 macOS 的應用程式需要 Mac。
.NET MAUI 提供的內容
.NET MAUI 提供控件集合,可用來顯示數據、起始動作、指出活動、顯示集合、挑選數據等等。 除了控件集合之外,.NET MAUI 也提供:
- 用於設計頁面的詳盡版面配置引擎。
- 多個用於建立豐富瀏覽類型 (例如選單) 的頁面類型。
- 對適用於更簡潔且可維護之開發模式的資料繫結支援。
- 自定義處理程式以增強UI元素呈現方式的能力。
- 用於存取原生裝置功能的跨平臺 API。 這些 API 可讓應用程式存取裝置功能,例如 GPS、加速計和電池和網路狀態。 如需詳細資訊,請參閱 裝置功能的跨平臺 API。
- 跨平台圖形功能,提供支援繪製和繪製圖形和影像、組合作業和圖形物件轉換的繪圖畫布。
- 使用多重目標以 Android、iOS、macOS 和 Windows 為目標的單一項目系統。 如需詳細資訊,請參閱 .NET MAUI 單一專案。
- .NET 熱重載,讓您可以在應用程式執行時同時修改 XAML 和受控原始程式碼,然後觀察修改的結果,而不重建應用程式。 如需詳細資訊,請參閱 .NET 熱重載。
裝置功能的跨平臺 API
.NET MAUI 提供原生裝置功能的跨平臺 API。 .NET MAUI 用來存取裝置功能的功能範例包括:
- 存取感測器,例如裝置上的加速計、指南針和陀螺儀。
- 能夠檢查裝置的網路連線狀態,並偵測變更。
- 提供應用程式執行裝置的相關信息。
- 在應用程式之間,將文字複製並貼到系統剪貼簿。
- 從裝置挑選單一或多個檔案。
- 將數據安全地儲存為索引鍵/值組。
- 利用內建的文字到語音轉換引擎,從裝置讀取文字。
- 起始瀏覽器型驗證流程,以接聽特定應用程式註冊 URL 的回呼。
單一專案
.NET MAUI 單一專案會採用您在開發應用程式時通常遇到的平臺特定開發體驗,並將其抽象化成以 Android、iOS、macOS 和 Windows 為目標的單一共享專案。
不論目標平台為何,.NET MAUI 單一專案都提供簡化且一致的跨平臺開發體驗。 .NET MAUI 單一專案提供下列功能:
- 以 Android、iOS、macOS 和 Windows 為目標的單一共享專案。
- 執行 .NET MAUI 應用程式的簡化偵錯目標選取專案。
- 單一專案中的共享資源檔。
- 單一應用程式指令清單,指定應用程式標題、標識碼和版本。
- 視需要存取平臺特定的 API 和工具。
- 單一跨平臺應用程式進入點。
.NET MAUI 單一專案是使用多重目標啟用,並使用 SDK 樣式專案。 如需 .NET MAUI 單一專案的詳細資訊,請參閱 .NET MAUI 單一專案。
熱重新載入
.NET MAUI 包含 .NET 熱重載的支援,可讓您在應用程式執行時修改受控原始程式碼,而不需要手動暫停或叫用斷點。 然後,您的程式代碼編輯可以套用至執行中的應用程式,而不需重新編譯。
.NET MAUI 也包含 XAML 熱重載的支援,可讓您儲存 XAML 檔案,並在不重新編譯的情況下查看反映在執行中應用程式中的變更。 此外,您的瀏覽狀態和數據將會維持,讓您快速查看 UI,而不會遺失應用程式中的位置。