.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 (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 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.
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 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 — .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 — 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.
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"))
}
}
};
}
}
.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.
| Platforma | Minimal versiya | UI freymvork | Holat |
|---|---|---|---|
| iOS | iOS 15.0 | UIKit (Mac Catalyst) | Barqaror |
| Android | API 21 (5.0) | AndroidX / Material 3 | Barqaror |
| Windows | Win 10 1809 | WinUI 3 / Fluent Design | Barqaror |
| macOS | macOS 12.0 | AppKit (Mac Catalyst) | Barqaror |
| Tizen | Tizen 6.5 | TizenFX / Samsung | Qo'shimcha |
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 — 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 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.
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.
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.
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
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.