.NET MAUI — ano ito, arkitektura at cross-platform na pag-develop

May-akda: IT Sectr Nai-publish: 2026-05-01 Oras ng pagbabasa: 8 min

.NET MAUI — ay isang cross-platform na framework ng Microsoft para sa paggawa ng native na aplikasyon sa C# at XAML, inilabas noong 2022 kasama ng .NET 6. Ayon sa Microsoft .NET MAUI Documentation, 2024, sinusuportahan ng MAUI ang iOS, Android, Windows, macOS at Tizen, pinagsasama ang mga ito sa iisang proyekto na may shared codebase. Ang framework ay direktang kahalili ng Xamarin.Forms.

Mga pangunahing punto

  • .NET MAUI — kahalili ng Xamarin.Forms, naka-embed sa .NET 6+ nang walang hiwalay na SDK
  • Isang Single Project ang pumapalit sa tatlong hiwalay na proyekto ng platform
  • XAML at C# ay ginagamit para sa deklaratibong pagbuo ng UI at business logic
  • Handlers ang pumalit sa lumang Xamarin.Forms renderer para sa platform abstraction
  • Suporta para sa 5 platform: iOS, Android, Windows, macOS, Tizen

Ano ang .NET MAUI

.NET MAUI (Multi-platform App UI) — ay ang ebolusyon ng Xamarin.Forms, muling idinisenyo mula sa simula para sa .NET 6+. Hindi tulad ng Xamarin.Forms na nangangailangan ng hiwalay na proyekto para sa bawat platform, ang MAUI ay gumagamit ng iisang istraktura na may shared .csproj file at platform folder na Platforms/iOS, Platforms/Android, Platforms/Windows at Platforms/MacCatalyst. Ang unang stable release ng MAUI ay noong Mayo 2022.

Ang pangunahing pagkakaiba ng .NET MAUI mula sa hinalinhan nito — buong integrasyon sa .NET 8 BCL (Base Class Library). Ang mga developer ay may direktang access sa System.Text.Json, System.Net.Http, System.Linq, System.IO at iba pang API nang walang karagdagang SDK. Ang Xamarin.Forms ay gumamit ng .NET Standard 2.0 para sa shared logic, na naglimita ng access sa mga bagong kakayahan ng .NET platform.

Ayon sa Microsoft Build 2024, ang .NET MAUI ay ginagamit sa 40,000+ aplikasyon sa App Store at Google Play. Kabilang sa mga kilalang proyekto — UPS Mobile, The Weather Channel at Siemens Teamcenter. Aktibong binuo ng Microsoft ang MAUI sa loob ng .NET 9.

Kasaysayan at pinagmulan ng .NET MAUI

Ang anunsyo ng .NET MAUI ay naganap sa Microsoft Build 2020 bilang bahagi ng diskarte sa pag-iisa ng .NET. Pinagsama ng Microsoft ang .NET Core, Mono at .NET Framework sa iisang .NET 5+ platform. Ang Xamarin.Forms ay naging batayan para sa MAUI, ngunit ang codebase ay ganap na isinulat muli: ang lumang API ay tinanggal, ang renderer ay pinalitan ng Handlers, ang DependencyService ay pinalitan ng DI container.

Ang bersyon na .NET MAUI 8 (Nobyembre 2023) ay nagdagdag ng suporta para sa Native AOT, pinahusay na pagganap ng CollectionView, Blazor Hybrid (pag-embed ng mga Blazor component sa MAUI application) at bagong font mapping. Ang .NET MAUI 9 (2024) ay may kasamang suporta para sa C# 12, pinahusay na integrasyon sa WinUI 3 at macOS Sonoma, at bagong Drag & Drop API para sa lahat ng platform.

Pagkakaiba ng .NET MAUI sa Xamarin.Forms

Unang pagkakaiba — iisang aplikasyon. Sa Xamarin.Forms para sa iOS at Android ay kailangan ng dalawang hiwalay na proyekto sa iisang solusyon. Sa .NET MAUI iisang proyekto na may platform folder. Pinapasimple nito ang pag-navigate sa code, pamamahala ng dependencies at CI/CD pipeline. Ang .csproj file ay gumagamit ng SDK-style format na may TargetFrameworks: net8.0-android, net8.0-ios, net8.0-maccatalyst.

Ikalawang pagkakaiba — arkitektura ng rendering sa pamamagitan ng Handlers sa halip na renderer. Sa Xamarin.Forms bawat elemento (Button, Label) ay may sariling Renderer class na gumagawa ng native control. Para sa pag-customize ay kinakailangan ang Custom Renderer. Sa MAUI ang Handler ay isang magaan na bagay na nagma-map ng abstract na elemento sa native control at sumusuporta sa Property Mappers para ma-update ang mga property nang hindi muling ginagawa ang control.

Ikatlong pagkakaiba — iisang DI container Microsoft.Extensions.DependencyInjection. Ang Xamarin.Forms ay gumamit ng DependencyService para sa pagrehistro ng platform implementations. Ang MAUI ay nag-embed ng DI sa core ng framework: ang mga serbisyo ay nirirehistro sa MauiAppBuilder, ang mga controller ay tumatanggap ng dependencies sa pamamagitan ng constructor. Pinapasimple nito ang pag-test at sumusunod sa mga modernong .NET na kasanayan.

Arkitektura ng .NET MAUI

Ang arkitektura ng .NET MAUI ay batay sa multi-layer na modelo. Ilalim na layer — .NET BCL at Mono Runtime (Android) / CoreCLR (Windows) / NativeAOT (iOS). Gitnang layer — Microsoft.Maui.dll na may core ng framework: Handlers, Layout, Graphics, Controls. Itaas na layer — aplikasyon ng developer na may XAML pages, ViewModel at mga serbisyo.

Single Project at Multi-Targeting

Single Project — ay isang pangunahing arkitektural na katangian ng .NET MAUI. Lahat ng file ay nahahati sa tatlong kategorya: shared code (Shared), platform code (Platforms) at resources (Resources). Ang multi-targeting sa .csproj ay tumutukoy kung para sa anong mga platform binuo ang aplikasyon. Bawat platform ay nagko-compile lamang ng sarili nitong Platforms folder at shared code.

Ang platform code ay matatagpuan sa conditional folder. Ang Platforms/Android ay naglalaman ng MainActivity.cs, MainApplication.cs at AndroidManifest.xml. Platforms/iOS — AppDelegate.cs, Info.plist at Entitlements.plist. Platforms/Windows — Package.appxmanifest at App.xaml. Para sa conditional compilation sa code ay ginagamit ang mga direktiba na #if ANDROID, #if IOS, #if WINDOWS, #if MACCATALYST.

XAML at MVVM sa .NET MAUI

XAML — isang deklaratibong markup language, minana mula sa Xamarin.Forms at WPF. Sa .NET MAUI ang XAML ay ginagamit para ilarawan ang mga page (ContentPage), layout (VerticalStackLayout, Grid, FlexLayout), elemento (Label, Entry, Button, Image) at kontrol (CollectionView, CarouselView). Ang XAML ay nio-compile sa BAML format sa yugto ng pagbuo.

Ang MVVM pattern ay naipapatupad sa pamamagitan ng CommunityToolkit.Mvvm — isang open-source library mula sa Microsoft. Ang attribute na [ObservableProperty] ay bumubuo ng INotifyPropertyChanged na property, [RelayCommand] ay gumagawa ng command mula sa mga method. Ang Source Generator CommunityToolkit.Mvvm 8.2 ay nag-transform ng partial class ViewModel, na bumubuo ng ObservableObject nang walang Reflection. Pinapabilis nito ang Binding ng 30% kumpara sa manu-manong implementasyon.

Halimbawa ng aplikasyon sa .NET MAUI

csharp
using Microsoft.Maui;
using Microsoft.Maui.Controls;

namespace MauiApp;

public class MainPage : ContentPage
{
    public MainPage()
    {
        Title = "MAUI App";
        
        Content = new VerticalStackLayout
        {
            Spacing = 12,
            Padding = new Thickness(16),
            Children =
            {
                new Label
                {
                    Text = "Hello, .NET MAUI!",
                    FontSize = 24,
                    FontAttributes = FontAttributes.Bold
                },
                new Button
                {
                    Text = "Pindutin mo ako",
                    BackgroundColor = Colors.Blue,
                    TextColor = Colors.White,
                    Command = new Command(async () =>
                        await DisplayAlert("Kamusta", "Mundo", "OK"))
                }
            }
        };
    }
}

Mga platform at suporta

.NET MAUI ay sumusuporta sa 5 platform: iOS 15.0+, Android 5.0 (API 21)+, Windows 10 1809+, macOS 12.0+ (MacCatalyst) at Tizen 6.5+. Bawat platform ay gumagamit ng sarili nitong set ng kontrol at API. Ang iOS ay gumagamit ng UIKit sa pamamagitan ng Mac Catalyst, Android — AndroidX sa pamamagitan ng Xamarin.Android, Windows — WinUI 3, macOS — AppKit sa pamamagitan ng Mac Catalyst.

Sa iOS at Android ang MAUI ay gumagamit ng parehong rendering mechanism gaya ng Xamarin.Forms — native UI controls. Gayunpaman, ang Handlers ay nagbibigay ng mas flexible na pag-customize. Para sa platform configuration ng Button sa iOS ay ginagamit ang OnPlatform<Button> na may PlatformConfiguration.iOS. Para sa Windows ang MAUI ay gumagamit ng WinUI 3 — isang modernong UI framework mula sa Microsoft na may suporta para sa Fluent Design System.

Ang suporta para sa macOS ay idinagdag sa pamamagitan ng Mac Catalyst — teknolohiya ng Apple na nagpapatakbo ng UIKit apps sa Mac. Ito ay nagpapahintulot ng 100% muling paggamit ng iOS MAUI code para sa macOS na bersyon ng aplikasyon. Para sa mga tiyak na Mac function (Menu Bar, Touch Bar) ang MAUI ay nagbibigay ng platform API sa pamamagitan ng Mac Catalyst at NSView wrapper.

Tizen — platform ng Samsung para sa Smart TV, smartphone at smartwatch. Ang suporta para sa Tizen sa .NET MAUI ay naipatupad sa pamamagitan ng Samsung Tizen .NET. Ang mga MAUI application ay nio-compile para sa Tizen sa pamamagitan ng Samsung TizenFX bindings. Gayunpaman, ang Tizen ay hindi priority platform ng Microsoft — ang mga update para dito ay lumalabas na may 1–2 buwang pagkaantala.

PlatformMinimum na bersyonUI frameworkStatus
iOSiOS 15.0UIKit (Mac Catalyst)Stable
AndroidAPI 21 (5.0)AndroidX / Material 3Stable
WindowsWin 10 1809WinUI 3 / Fluent DesignStable
macOSmacOS 12.0AppKit (Mac Catalyst)Stable
TizenTizen 6.5TizenFX / SamsungKaragdagan

Mga kalamangan ng .NET MAUI

Isang codebase — binabawasan ng .NET MAUI ang dami ng pagdodoble ng code. Isang proyekto sa C# at XAML ay nio-compile para sa 5 platform, na nagbibigay ng hanggang 95% shared code para sa mga aplikasyon na may simpleng UI. Ang business logic, serbisyo, data models at HTTP client ay nasa shared code. Tanging ang mga platform feature (camera, geolocation, biometrics) ang nangangailangan ng hiwalay na implementasyon sa pamamagitan ng DI.

Pagganap ng .NET MAUI ay mas mataas kaysa sa Xamarin.Forms. Binabawasan ng Handlers ang rendering overhead: ang mga pagsubok ng Microsoft ay nagpapakita ng pagbawas sa oras ng pag-render ng screen ng 20–30% kumpara sa Xamarin.Forms 5.0. Ang Native AOT sa iOS ay nagco-compile ng C# code nang direkta sa ARM64 instructions, inaalis ang JIT compilation at binabawasan ang startup time ng 40%.

Blazor Hybrid — isang natatanging kakayahan ng .NET MAUI. Ang BlazorWebView ay nag-embed ng mga Blazor component nang direkta sa MAUI application. Ang mga developer ng web interface ay maaaring muling gumamit ng mga Blazor component (Razor pages, JS-interop, CSS styles) sa mobile application. Ang Blazor Hybrid ay gumagana sa lahat ng 5 MAUI platform nang hindi binabago ang code ng Blazor component.

.NET ecosystem — access sa libu-libong NuGet package: Entity Framework Core para sa pagtatrabaho sa database, Serilog para sa pag-log, Polly para sa paulit-ulit na HTTP request, FluentValidation para sa validation. Ang CommunityToolkit.Maui ay nagbibigay ng handa nang gamiting UI elements: Popup, Toast, Snackbar, SemanticScreenReader para sa accessibility. Ang .NET MAUI ay integrated sa Azure, SignalR at Microsoft Graph SDK.

Mga tool sa pag-develop — Visual Studio 2022 at Rider mula sa JetBrains. Ang XAML Hot Reload ay nag-a-update ng UI nang hindi nirirestart ang application sa loob ng 1–2 segundo. Ang C# Hot Reload (mula sa .NET 6+) ay nagre-recompile ng pagbabago sa method nang hindi nirirestart ang process. Ang Visual Studio Debugger, Profiler at IntelliCode ay bumubuo sa set ng mga tool para sa pag-diagnose ng pagganap at kalidad ng code.

Mga madalas itanong

Ano ang .NET MAUI?

.NET MAUI — ay isang cross-platform na framework ng Microsoft para sa paggawa ng native apps sa C# at XAML para sa iOS, Android, Windows, macOS at Tizen. Ito ay kahalili ng Xamarin.Forms, naka-embed sa .NET 6+ at gumagamit ng iisang proyekto (Single Project) sa halip na hiwalay na proyekto para sa bawat platform.

Ano ang pagkakaiba ng .NET MAUI sa Xamarin.Forms?

.NET MAUI ay gumagamit ng iisang proyekto, Handlers sa halip na renderer, integrated DI container, Native AOT para sa iOS at Blazor Hybrid. Ang Xamarin.Forms ay nangangailangan ng hiwalay na proyekto para sa bawat platform, gumagamit ng Custom Renderer para sa pag-customize ng UI, DependencyService para sa DI at hindi sumusuporta sa Blazor. Ang .NET MAUI ay bahagi ng .NET, ang Xamarin.Forms ay hiwalay na SDK.

Sinusuportahan ba ng .NET MAUI ang macOS?

Oo, sinusuportahan ng .NET MAUI ang macOS sa pamamagitan ng Mac Catalyst (minimum na bersyon macOS 12.0). Ang iOS apps sa MAUI ay awtomatikong nio-compile para sa Mac nang walang pagbabago sa code. Para sa native na Mac functions (Menu Bar, Dock, Touch ID) ay ginagamit ang platform calls sa pamamagitan ng Mac Catalyst at NSView wrapper sa folder Platforms/MacCatalyst.

Maaari bang gumamit ng Flutter package sa .NET MAUI?

Hindi, ang .NET MAUI ay hindi compatible sa Dart/Flutter packages. Ang MAUI ay gumagamit ng .NET ecosystem at NuGet packages. Para sa mga platform feature (camera, Bluetooth, biometrics) ay ginagamit ang native libraries sa pamamagitan ng Android Bindings (Kotlin/Java) at iOS Bindings (Objective-C/Swift). Ang CommunityToolkit.Maui ay nagbibigay ng handa nang wrapper para sa mga popular na scenario.

Mas mabagal ba ang .NET MAUI kumpara sa native app?

Ang pagkakaiba sa pagganap ay minimal. Ang .NET MAUI na may Handlers at Native AOT sa iOS ay umaabot ng 95–98% ng pagganap ng native SwiftUI app. Sa Android ang pagkakaiba sa Kotlin app ay 3–7% sa UI rendering tests (Microsoft Benchmarks, 2024). Para sa karamihan ng business apps ang pagkakaiba ay hindi napapansin ng user.

Buod

  • .NET MAUI — cross-platform na framework ng Microsoft sa C# at XAML, kahalili ng Xamarin.Forms
  • Single Project na may multi-targeting ay pumapalit sa 3 hiwalay na proyekto na may iisang configuration
  • Handlers ay nagbibigay ng mas mabilis na rendering kaysa sa Xamarin.Forms renderer
  • Blazor Hybrid ay nagpapahintulot ng pag-embed ng web components nang direkta sa mobile app
  • 5 platform — iOS 15+, Android 5.0+, Windows 10, macOS 12+, Tizen 6.5+
  • Native AOT sa iOS ay binabawasan ang startup time ng 40% at laki ng binary file
  • Piliin ang .NET MAUI para sa .NET proyekto na may pangangailangan sa cross-platform at access sa native API

Gagawa kami ng mobile application na turnkey

Gumagawa ang IT Sectr ng mga iOS at Android application para sa mga startup at negosyo mula noong 2017. Magpapayo kami sa iyo at magmumungkahi ng pinakamahusay na solusyon.

Pag-usapan ang proyekto

Basahin din