.NET MAUI — bu nima, arxitektura va kross-platforma dasturlash

Muallif: IT Sectr Nashr etilgan: 2026-05-01 O'qish vaqti: 8 daq

.NET MAUI — 2022-yilda .NET 6 bilan birga chiqarilgan, C# va XAML da native ilovalar yaratish uchun Microsoft-ning kross-platforma freymvorkidir. Microsoft .NET MAUI Documentation, 2024 ga ko'ra, MAUI iOS, Android, Windows, macOS va Tizenni qo'llab-quvvatlaydi, ularni umumiy kod bazasiga ega yagona loyihaga birlashtiradi. Freymvork Xamarin.Forms-ning to'g'ridan-to'g'ri vorisidir.

Asosiy ma'lumotlar

  • .NET MAUI — alohida SDKsiz .NET 6+ ga o'rnatilgan Xamarin.Forms vorisi
  • Yagona Single Project uchta alohida platforma loyihasini almashtiradi
  • XAML va C# deklarativ UI qurish va biznes mantiq uchun ishlatiladi
  • Handlers platforma abstraksiyasi uchun eskirgan Xamarin.Forms rendererlarini almashtirdi
  • 5 platforma qo'llab-quvvatlashi: iOS, Android, Windows, macOS, Tizen

.NET MAUI nima

.NET MAUI (Multi-platform App UI) — .NET 6+ uchun noldan qayta ishlangan Xamarin.Forms evolyutsiyasidir. Har bir platforma uchun alohida loyihalarni talab qiladigan Xamarin.Forms-dan farqli o'laroq, MAUI umumiy .csproj fayli va Platforms/iOS, Platforms/Android, Platforms/Windows va Platforms/MacCatalyst platforma papkalari bilan yagona strukturadan foydalanadi. MAUI ning birinchi barqaror relizi 2022-yil may oyida bo'ldi.

.NET MAUI ning o'tmishdoshidan asosiy farqi — .NET 8 BCL (Base Class Library) bilan to'liq integratsiyadir. Dasturchilar qo'shimcha SDKsiz to'g'ridan-to'g'ri System.Text.Json, System.Net.Http, System.Linq, System.IO va boshqa API-larga kirishadi. Xamarin.Forms umumiy mantiq uchun .NET Standard 2.0 dan foydalangan, bu esa .NET platformasining yangi imkoniyatlariga kirishni cheklagan.

Microsoft Build 2024 ma'lumotlariga ko'ra, .NET MAUI App Store va Google Play da 40 000+ ilovalarda ishlatiladi. Taniqli loyihalar orasida — UPS Mobile, The Weather Channel va Siemens Teamcenter bor. Microsoft .NET 9 doirasida MAUI ni faol rivojlantirmoqda.

.NET MAUI ning tarixi va kelib chiqishi

.NET MAUI e'loni Microsoft Build 2020 da .NET unifikatsiya strategiyasining bir qismi sifatida bo'ldi. Microsoft .NET Core, Mono va .NET Framework ni yagona .NET 5+ platformasiga birlashtirdi. Xamarin.Forms MAUI uchun asos bo'ldi, ammo kod bazasi to'liq qayta yozildi: eskirgan API-lar olib tashlandi, rendererlar Handlers bilan almashtirildi, DependencyService DI konteyneri bilan almashtirildi.

.NET MAUI 8 versiyasi (noyabr 2023) Native AOT qo'llab-quvvatlashini, yaxshilangan CollectionView ishlashini, Blazor Hybrid (Blazor komponentlarini MAUI ilovasiga joylashtirish) va yangi shrift xaritalashni qo'shdi. .NET MAUI 9 (2024) C# 12 qo'llab-quvvatlashini, WinUI 3 va macOS Sonoma bilan yaxshilangan integratsiyani, shuningdek barcha platformalar uchun yangi Drag & Drop API ni o'z ichiga oladi.

.NET MAUI ning Xamarin.Forms dan farqi

Birinchi farq — yagona ilova. Xamarin.Forms da iOS va Android uchun bitta yechimda ikkita alohida loyiha kerak edi. .NET MAUI da platforma papkalari bilan bitta loyiha. Bu kod navigatsiyasini, bog'liqliklarni boshqarishni va CI/CD quvurlarini soddalashtiradi. .csproj fayli TargetFrameworks bilan SDK-style formatidan foydalanadi: net8.0-android, net8.0-ios, net8.0-maccatalyst.

Ikkinchi farq — render arxitekturasi rendererlar o'rniga Handlers orqali. Xamarin.Forms da har bir element (Button, Label) native boshqaruvni yaratadigan o'z Renderer klassiga ega edi. Moslashtirish uchun Custom Renderer kerak edi. MAUI da Handler — abstrakt elementni native boshqaruvga xaritalaydigan va boshqaruvni qayta yaratmasdan xususiyatlarni yangilash uchun Property Mappers ni qo'llab-quvvatlaydigan engil ob'ektdir.

Uchinchi farq — yagona DI konteyneri Microsoft.Extensions.DependencyInjection. Xamarin.Forms platforma implementatsiyalarini ro'yxatdan o'tkazish uchun DependencyService dan foydalangan. MAUI DI ni freymvork yadrosiga joylashtiradi: xizmatlar MauiAppBuilder da ro'yxatdan o'tkaziladi, boshqaruvchilar bog'liqliklarni konstruktor orqali oladi. Bu testlashni soddalashtiradi va zamonaviy .NET amaliyotlariga mos keladi.

.NET MAUI arxitekturasi

.NET MAUI arxitekturasi ko'p qatlamli modelga asoslangan. Pastki qatlam — .NET BCL va Mono Runtime (Android) / CoreCLR (Windows) / NativeAOT (iOS). O'rta qatlam — freymvork yadrosi bilan Microsoft.Maui.dll: Handlers, Layout, Graphics, Controls. Yuqori qatlam — XAML sahifalari, ViewModel va xizmatlari bilan dasturchi ilovasi.

Single Project va Multi-Targeting

Single Project — .NET MAUI ning asosiy arxitektura xususiyatidir. Barcha fayllar uch toifaga bo'linadi: umumiy kod (Shared), platforma kodi (Platforms) va resurslar (Resources). .csproj da multi-targeting ilova qaysi platformalar uchun qurilayotganini ko'rsatadi. Har bir platforma faqat o'z Platforms papkasini va umumiy kodni kompilyatsiya qiladi.

Platforma kodi shartli papkalarda joylashgan. Platforms/Android MainActivity.cs, MainApplication.cs va AndroidManifest.xml ni o'z ichiga oladi. Platforms/iOS — AppDelegate.cs, Info.plist va Entitlements.plist. Platforms/Windows — Package.appxmanifest va App.xaml. Kodda shartli kompilyatsiya uchun #if ANDROID, #if IOS, #if WINDOWS, #if MACCATALYST direktivalari ishlatiladi.

XAML va MVVM .NET MAUI da

XAML — Xamarin.Forms va WPF dan meros qolgan deklarativ belgilash tilidir. .NET MAUI da XAML sahifalarni (ContentPage), joylashuvlarni (VerticalStackLayout, Grid, FlexLayout), elementlarni (Label, Entry, Button, Image) va boshqaruvlarni (CollectionView, CarouselView) tavsiflash uchun ishlatiladi. XAML qurish bosqichida BAML formatiga kompilyatsiya qilinadi.

MVVM namunasi CommunityToolkit.Mvvm — Microsoft-ning ochiq kodli kutubxonasi orqali amalga oshiriladi. [ObservableProperty] atributi INotifyPropertyChanged xususiyatlarini yaratadi, [RelayCommand] metodlardan buyruqlar yaratadi. Source Generator CommunityToolkit.Mvvm 8.2 partial class ViewModel ni transformatsiya qilib, Reflectionsiz ObservableObject yaratadi. Bu qo'lda implementatsiyaga nisbatan Binding ni 30% tezlashtiradi.

.NET MAUI da ilova namunasi

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 = "Meni bos",
                    BackgroundColor = Colors.Blue,
                    TextColor = Colors.White,
                    Command = new Command(async () =>
                        await DisplayAlert("Salom", "Dunyo", "OK"))
                }
            }
        };
    }
}

Platformalar va qo'llab-quvvatlash

.NET MAUI 5 platformani qo'llab-quvvatlaydi: iOS 15.0+, Android 5.0 (API 21)+, Windows 10 1809+, macOS 12.0+ (MacCatalyst) va Tizen 6.5+. Har bir platforma o'z boshqaruv va API to'plamidan foydalanadi. iOS Mac Catalyst orqali UIKit, Android — Xamarin.Android orqali AndroidX, Windows — WinUI 3, macOS — Mac Catalyst orqali AppKit dan foydalanadi.

iOS va Android da MAUI Xamarin.Forms bilan bir xil render mexanizmlaridan — native UI boshqaruvlaridan foydalanadi. Biroq Handlers yanada moslashuvchan moslashtirishni ta'minlaydi. iOS da Button ni platforma sozlamasi uchun PlatformConfiguration.iOS bilan OnPlatform<Button> ishlatiladi. Windows uchun MAUI Fluent Design System qo'llab-quvvatlashi bilan Microsoft-ning zamonaviy UI freymvorki WinUI 3 dan foydalanadi.

macOS qo'llab-quvvatlashi Mac Catalyst — UIKit ilovalarini Mac da ishga tushiradigan Apple texnologiyasi orqali qo'shilgan. Bu macOS versiyasi uchun MAUI iOS kodining 100% qayta ishlatilishiga imkon beradi. Maxsus Mac funksiyalari (Menu Bar, Touch Bar) uchun MAUI Mac Catalyst va NSView o'ramlari orqali platforma API larini taqdim etadi.

Tizen — Samsung-ning Smart TV, smartfon va aqlli soatlar uchun platformasi. .NET MAUI da Tizen qo'llab-quvvatlashi Samsung Tizen .NET orqali amalga oshirilgan. MAUI ilovalari Samsung TizenFX bog'lamlari orqali Tizen uchun kompilyatsiya qilinadi. Biroq Tizen Microsoft-ning ustuvor platformasi emas — yangilanishlar 1–2 oy kechikish bilan chiqadi.

PlatformaMinimal versiyaUI freymvorkHolat
iOSiOS 15.0UIKit (Mac Catalyst)Barqaror
AndroidAPI 21 (5.0)AndroidX / Material 3Barqaror
WindowsWin 10 1809WinUI 3 / Fluent DesignBarqaror
macOSmacOS 12.0AppKit (Mac Catalyst)Barqaror
TizenTizen 6.5TizenFX / SamsungQo'shimcha

.NET MAUI ning afzalliklari

Yagona kod bazasi — .NET MAUI kod takrorlanish hajmini kamaytiradi. C# va XAML da bitta loyiha 5 platforma uchun kompilyatsiya qilinadi, oddiy UI li ilovalar uchun 95% gacha umumiy kodni ta'minlaydi. Biznes mantiq, xizmatlar, ma'lumot modellari va HTTP mijozlari umumiy kodda joylashgan. Faqat platforma funksiyalari (kamera, geolokatsiya, biometriya) DI orqali alohida implementatsiyalarni talab qiladi.

Ishlash tezligi .NET MAUI Xamarin.Forms dan yuqori. Handlers render yukini kamaytiradi: Microsoft testlari Xamarin.Forms 5.0 bilan solishtirganda ekran chizish vaqtining 20–30% qisqarishini ko'rsatadi. iOS da Native AOT C# kodini to'g'ridan-to'g'ri ARM64 ko'rsatmalariga kompilyatsiya qiladi, JIT kompilyatsiyani yo'q qiladi va ishga tushirish vaqtini 40% kamaytiradi.

Blazor Hybrid — .NET MAUI ning noyob imkoniyati. BlazorWebView Blazor komponentlarini to'g'ridan-to'g'ri MAUI ilovasiga joylashtiradi. Veb interfeys dasturchilari Blazor komponentlarini (Razor sahifalari, JS-interop, CSS uslublari) mobil ilovada qayta ishlatishlari mumkin. Blazor Hybrid Blazor komponentlari kodini o'zgartirmasdan barcha 5 MAUI platformasida ishlaydi.

.NET ekotizimi — minglab NuGet paketlariga kirish: ma'lumotlar bazalari bilan ishlash uchun Entity Framework Core, jurnallash uchun Serilog, takroriy HTTP so'rovlar uchun Polly, validatsiya uchun FluentValidation. CommunityToolkit.Maui tayyor UI elementlarini taqdim etadi: Popup, Toast, Snackbar, foydalanish qulayligi uchun SemanticScreenReader. .NET MAUI Azure, SignalR va Microsoft Graph SDK bilan integratsiyalanadi.

Dasturlash vositalari — Visual Studio 2022 va JetBrains dan Rider. XAML Hot Reload UI ni ilovani qayta ishga tushirmasdan 1–2 soniyada yangilaydi. C# Hot Reload (.NET 6+ dan) metod o'zgarishini jarayonni qayta ishga tushirmasdan qayta kompilyatsiya qiladi. Visual Studio Debugger, Profiler va IntelliCode ishlash va kod sifati diagnostikasi vositalari to'plamini to'ldiradi.

Tez-tez beriladigan savollar

.NET MAUI nima?

.NET MAUI — iOS, Android, Windows, macOS va Tizen uchun C# va XAML da native ilovalar yaratish uchun Microsoft-ning kross-platforma freymvorkidir. U Xamarin.Forms vorisi, .NET 6+ ga o'rnatilgan va har bir platforma uchun alohida loyihalar o'rniga yagona loyiha (Single Project) dan foydalanadi.

.NET MAUI Xamarin.Forms dan qanday farq qiladi?

.NET MAUI yagona loyiha, rendererlar o'rniga Handlers, o'rnatilgan DI konteyneri, iOS uchun Native AOT va Blazor Hybrid dan foydalanadi. Xamarin.Forms har bir platforma uchun alohida loyihalarni talab qiladi, UI moslashtirish uchun Custom Renderer, DI uchun DependencyService dan foydalanadi va Blazor ni qo'llab-quvvatlamaydi. .NET MAUI .NET ning bir qismi, Xamarin.Forms alohida SDK dir.

.NET MAUI macOS ni qo'llab-quvvatlaydimi?

Ha, .NET MAUI macOS ni Mac Catalyst orqali qo'llab-quvvatlaydi (minimal versiya macOS 12.0). MAUI dagi iOS ilovalari kod o'zgarishisiz avtomatik ravishda Mac uchun kompilyatsiya qilinadi. Native Mac funksiyalari (Menu Bar, Dock, Touch ID) uchun Platforms/MacCatalyst papkasida Mac Catalyst va NSView o'ramlari orqali platforma chaqiruvlari ishlatiladi.

.NET MAUI da Flutter paketlaridan foydalanish mumkinmi?

Yo'q, .NET MAUI Dart/Flutter paketlari bilan mos kelmaydi. MAUI .NET ekotizimi va NuGet paketlaridan foydalanadi. Platforma funksiyalari (kamera, Bluetooth, biometriya) uchun Android Bindings (Kotlin/Java) va iOS Bindings (Objective-C/Swift) orqali native kutubxonalar ishlatiladi. CommunityToolkit.Maui mashhur stsenariylar uchun tayyor o'ramlarni taqdim etadi.

.NET MAUI native ilovadan sekinroqmi?

Ishlash tezligi farqi minimal. .NET MAUI Handlers va iOS da Native AOT bilan native SwiftUI ilovasi ishlashining 95–98% ga etadi. Android da Kotlin ilovasi bilan farq UI render testlarida 3–7% ni tashkil qiladi (Microsoft Benchmarks, 2024). Aksariyat biznes ilovalari uchun farq foydalanuvchiga sezilmaydi.

Xulosa

  • .NET MAUI — C# va XAML da Microsoft-ning kross-platforma freymvorki, Xamarin.Forms vorisi
  • Single Project multi-targeting bilan 3 ta alohida loyihani bitta konfiguratsiya bilan almashtiradi
  • Handlers Xamarin.Forms rendererlaridan tezroq renderlashni ta'minlaydi
  • Blazor Hybrid veb komponentlarini to'g'ridan-to'g'ri mobil ilovaga joylashtirishga imkon beradi
  • 5 platforma — iOS 15+, Android 5.0+, Windows 10, macOS 12+, Tizen 6.5+
  • Native AOT iOS da ishga tushirish vaqtini 40% va binar fayl hajmini kamaytiradi
  • Kross-platforma va native API larga kirish kerak bo'lgan .NET loyihalari uchun .NET MAUI ni tanlang

Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz

IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.

Loyihani muhokama qilish

Shuningdek o'qing