.NET MAUI एक क्रॉस-प्लेटफ़ॉर्म Microsoft फ्रेमवर्क है जो C# और XAML में नेटिव एप्लिकेशन बनाने के लिए है, जिसे 2022 में .NET 6 के साथ जारी किया गया था। Microsoft .NET MAUI Documentation, 2024 के अनुसार, MAUI iOS, Android, Windows, macOS और Tizen को सपोर्ट करता है, उन्हें एक साझा कोडबेस वाले एकल प्रोजेक्ट में जोड़ता है। यह फ्रेमवर्क Xamarin.Forms का प्रत्यक्ष उत्तराधिकारी है।
मुख्य बातें
.NET MAUI (Multi-platform App UI) Xamarin.Forms का विकास है, जिसे .NET 6+ के लिए शुरू से फिर से बनाया गया है। Xamarin.Forms के विपरीत, जिसे प्रत्येक प्लेटफ़ॉर्म के लिए अलग-अलग प्रोजेक्ट की आवश्यकता थी, MAUI एक साझा .csproj फ़ाइल और प्लेटफ़ॉर्म फ़ोल्डर Platforms/iOS, Platforms/Android, Platforms/Windows और Platforms/MacCatalyst के साथ एक एकल संरचना का उपयोग करता है। पहली स्थिर MAUI रिलीज़ मई 2022 में हुई थी।
.NET MAUI और इसके पूर्ववर्ती के बीच मुख्य अंतर .NET 8 BCL (बेस क्लास लाइब्रेरी) के साथ पूर्ण एकीकरण है। डेवलपर्स को बिना किसी अतिरिक्त SDK के सीधे System.Text.Json, System.Net.Http, System.Linq, System.IO और अन्य API तक पहुंच मिलती है। Xamarin.Forms ने साझा तर्क के लिए .NET Standard 2.0 का उपयोग किया, जिसने नई .NET प्लेटफ़ॉर्म क्षमताओं तक पहुंच को सीमित कर दिया।
Microsoft Build 2024 के अनुसार, .NET MAUI का उपयोग App Store और Google Play में 40,000+ एप्लिकेशन में किया जाता है। उल्लेखनीय परियोजनाओं में UPS Mobile, The Weather Channel और Siemens Teamcenter शामिल हैं। Microsoft नवंबर 2024 के लिए नियोजित .NET 9 के हिस्से के रूप में MAUI को सक्रिय रूप से विकसित कर रहा है।
.NET MAUI की घोषणा .NET एकीकरण रणनीति के हिस्से के रूप में Microsoft Build 2020 में की गई थी। Microsoft ने .NET Core, Mono और .NET Framework को एक एकल .NET 5+ प्लेटफ़ॉर्म में विलय कर दिया। Xamarin.Forms MAUI का आधार बन गया, लेकिन कोडबेस पूरी तरह से फिर से लिखा गया: पुराने API हटा दिए गए, रेंडरर को Handlers से बदल दिया गया, DependencyService को DI कंटेनर से बदल दिया गया।
.NET MAUI 8 (नवंबर 2023) ने Native AOT, बेहतर CollectionView प्रदर्शन, Blazor Hybrid (MAUI एप्लिकेशन में Blazor घटकों को एम्बेड करना) और नया फ़ॉन्ट मैपिंग के लिए समर्थन जोड़ा। .NET MAUI 9 (2024) में C# 12, बेहतर WinUI 3 और macOS Sonoma एकीकरण, और सभी प्लेटफ़ॉर्म के लिए एक नया Drag & Drop API शामिल है।
पहला अंतर एक एकल एप्लिकेशन है। Xamarin.Forms में, iOS और Android को एक समाधान में दो अलग-अलग प्रोजेक्ट की आवश्यकता थी। .NET MAUI में, प्लेटफ़ॉर्म फ़ोल्डर के साथ एक प्रोजेक्ट। यह कोड नेविगेशन, निर्भरता प्रबंधन और CI/CD पाइपलाइन को सरल बनाता है। .csproj फ़ाइल TargetFrameworks: net8.0-android, net8.0-ios, net8.0-maccatalyst के साथ SDK-style प्रारूप का उपयोग करती है।
दूसरा अंतर रेंडरर के बजाय Handlers का उपयोग करने वाली रेंडरिंग आर्किटेक्चर है। Xamarin.Forms में, प्रत्येक तत्व (Button, Label) का अपना Renderer वर्ग था जो एक नेटिव कंट्रोल बनाता था। अनुकूलन के लिए Custom Renderer की आवश्यकता थी। MAUI में, Handler एक हल्की वस्तु है जो एक अमूर्त तत्व को नेटिव कंट्रोल से मैप करती है और कंट्रोल को पुनः बनाए बिना गुणों को अपडेट करने के लिए Property Mappers का समर्थन करती है।
तीसरा अंतर एक एकीकृत DI कंटेनर Microsoft.Extensions.DependencyInjection है। Xamarin.Forms ने प्लेटफ़ॉर्म कार्यान्वयन को पंजीकृत करने के लिए DependencyService का उपयोग किया। MAUI DI को फ्रेमवर्क कोर में एम्बेड करता है: सेवाएं MauiAppBuilder में पंजीकृत होती हैं, कंट्रोलर कंस्ट्रक्टर के माध्यम से निर्भरताएं प्राप्त करते हैं। यह परीक्षण को सरल बनाता है और आधुनिक .NET प्रथाओं का पालन करता है।
.NET MAUI आर्किटेक्चर एक बहु-स्तरीय मॉडल पर आधारित है। निचली परत .NET BCL और Mono Runtime (Android) / CoreCLR (Windows) / NativeAOT (iOS) है। मध्य परत फ्रेमवर्क कोर के साथ Microsoft.Maui.dll है: Handlers, Layout, Graphics, Controls। ऊपरी परत XAML पेज, ViewModel और सेवाओं के साथ डेवलपर का एप्लिकेशन है।
Single Project .NET MAUI की एक प्रमुख आर्किटेक्चरल विशेषता है। सभी फ़ाइलें तीन श्रेणियों में विभाजित हैं: साझा कोड (Shared), प्लेटफ़ॉर्म कोड (Platforms) और संसाधन (Resources)। .csproj में Multi-targeting निर्दिष्ट करता है कि एप्लिकेशन किन प्लेटफ़ॉर्म के लिए बनाया गया है। प्रत्येक प्लेटफ़ॉर्म केवल अपना Platforms फ़ोल्डर और साझा कोड संकलित करता है।
प्लेटफ़ॉर्म कोड सशर्त फ़ोल्डर में रखा जाता है। Platforms/Android में MainActivity.cs, MainApplication.cs और AndroidManifest.xml है। Platforms/iOS — AppDelegate.cs, Info.plist और Entitlements.plist। Platforms/Windows — Package.appxmanifest और App.xaml। सशर्त संकलन के लिए, कोड #if ANDROID, #if IOS, #if WINDOWS, #if MACCATALYST निर्देशों का उपयोग करता है।
XAML Xamarin.Forms और WPF से विरासत में मिली एक घोषणात्मक मार्कअप भाषा है। .NET MAUI में, XAML का उपयोग पेज (ContentPage), लेआउट (VerticalStackLayout, Grid, FlexLayout), तत्व (Label, Entry, Button, Image) और कंट्रोल (CollectionView, CarouselView) का वर्णन करने के लिए किया जाता है। XAML बिल्ड समय पर BAML प्रारूप में संकलित होता है।
MVVM पैटर्न CommunityToolkit.Mvvm के माध्यम से कार्यान्वित किया जाता है — Microsoft से एक ओपन-सोर्स लाइब्रेरी। [ObservableProperty] विशेषता INotifyPropertyChanged गुण उत्पन्न करती है, [RelayCommand] विधियों से कमांड बनाता है। CommunityToolkit.Mvvm 8.2 Source Generator आंशिक वर्ग ViewModel को बदलता है, बिना Reflection के ObservableObject उत्पन्न करता है। यह मैन्युअल कार्यान्वयन की तुलना में Binding को 30% तक तेज करता है।
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 = "मुझे क्लिक करें",
BackgroundColor = Colors.Blue,
TextColor = Colors.White,
Command = new Command(async () =>
await DisplayAlert("नमस्ते", "दुनिया", "OK"))
}
}
};
}
}
.NET MAUI 5 प्लेटफ़ॉर्म को सपोर्ट करता है: iOS 15.0+, Android 5.0 (API 21)+, Windows 10 1809+, macOS 12.0+ (MacCatalyst) और Tizen 6.5+। प्रत्येक प्लेटफ़ॉर्म कंट्रोल और API का अपना सेट उपयोग करता है। iOS Mac Catalyst के माध्यम से UIKit का उपयोग करता है, Android — Xamarin.Android के माध्यम से AndroidX, Windows — WinUI 3, macOS — Mac Catalyst के माध्यम से AppKit।
iOS और Android पर, MAUI Xamarin.Forms के समान रेंडरिंग तंत्र का उपयोग करता है — नेटिव UI कंट्रोल। हालांकि, Handlers अधिक लचीला अनुकूलन प्रदान करते हैं। iOS पर प्लेटफ़ॉर्म-विशिष्ट Button कॉन्फ़िगरेशन के लिए, PlatformConfiguration.iOS के साथ OnPlatform<Button> का उपयोग किया जाता है। Windows के लिए, MAUI WinUI 3 का उपयोग करता है — Fluent Design System समर्थन के साथ Microsoft से एक आधुनिक UI फ्रेमवर्क।
macOS समर्थन Mac Catalyst के माध्यम से जोड़ा गया था — Apple की तकनीक जो Mac पर UIKit एप्लिकेशन चलाती है। यह एप्लिकेशन के macOS संस्करण के लिए 100% MAUI iOS कोड का पुन: उपयोग करने की अनुमति देता है। विशिष्ट Mac सुविधाओं (Menu Bar, Touch Bar) के लिए, MAUI Mac Catalyst और NSView रैपर के माध्यम से प्लेटफ़ॉर्म API प्रदान करता है।
Tizen सैमसंग का स्मार्ट TV, स्मार्टफ़ोन और स्मार्ट वॉच के लिए प्लेटफ़ॉर्म है। .NET MAUI में Tizen समर्थन Samsung Tizen .NET के माध्यम से कार्यान्वित किया गया है। MAUI एप्लिकेशन Samsung TizenFX बाइंडिंग के माध्यम से Tizen के लिए संकलित होते हैं। हालांकि, Tizen Microsoft के लिए प्राथमिकता वाला प्लेटफ़ॉर्म नहीं है — इसके लिए अपडेट 1–2 महीने की देरी से जारी होते हैं।
| प्लेटफ़ॉर्म | न्यूनतम संस्करण | UI फ्रेमवर्क | स्थिति |
|---|---|---|---|
| iOS | iOS 15.0 | UIKit (Mac Catalyst) | स्थिर |
| Android | API 21 (5.0) | AndroidX / Material 3 | स्थिर |
| Windows | Win 10 1809 | WinUI 3 / Fluent Design | स्थिर |
| macOS | macOS 12.0 | AppKit (Mac Catalyst) | स्थिर |
| Tizen | Tizen 6.5 | TizenFX / Samsung | अतिरिक्त |
एकीकृत कोडबेस — .NET MAUI कोड दोहराव को कम करता है। C# और XAML में एक प्रोजेक्ट 5 प्लेटफ़ॉर्म के लिए संकलित होता है, सरल UI वाले एप्लिकेशन के लिए 95% तक साझा कोड प्रदान करता है। व्यावसायिक तर्क, सेवाएं, डेटा मॉडल और HTTP क्लाइंट साझा कोड में हैं। केवल प्लेटफ़ॉर्म-विशिष्ट सुविधाओं (कैमरा, जियोलोकेशन, बायोमेट्रिक्स) को DI के माध्यम से अलग कार्यान्वयन की आवश्यकता होती है।
प्रदर्शन .NET MAUI का Xamarin.Forms से अधिक है। Handlers रेंडरिंग ओवरहेड को कम करते हैं: Microsoft परीक्षण Xamarin.Forms 5.0 की तुलना में स्क्रीन रेंडरिंग समय में 20–30% की कमी दिखाते हैं। iOS पर Native AOT C# कोड को सीधे ARM64 निर्देशों में संकलित करता है, JIT संकलन को समाप्त करता है और स्टार्टअप समय को 40% कम करता है।
Blazor Hybrid .NET MAUI की एक अनूठी क्षमता है। BlazorWebView MAUI एप्लिकेशन में सीधे Blazor घटकों को एम्बेड करता है। वेब इंटरफ़ेस डेवलपर मोबाइल एप्लिकेशन में Blazor घटकों (Razor पेज, JS इंटरऑप, CSS शैलियाँ) का पुन: उपयोग कर सकते हैं। Blazor Hybrid Blazor घटक कोड को बदले बिना सभी 5 MAUI प्लेटफ़ॉर्म पर काम करता है।
.NET पारिस्थितिकी तंत्र — हजारों NuGet पैकेजों तक पहुंच: डेटाबेस संचालन के लिए Entity Framework Core, लॉगिंग के लिए Serilog, पुनः प्रयास HTTP अनुरोधों के लिए Polly, सत्यापन के लिए FluentValidation। CommunityToolkit.Maui रेडी-मेड UI तत्व प्रदान करता है: Popup, Toast, Snackbar, पहुंच के लिए SemanticScreenReader। .NET MAUI Azure, SignalR और Microsoft Graph SDK के साथ एकीकृत होता है।
डेवलपमेंट टूल — Visual Studio 2022 और JetBrains का Rider। XAML Hot Reload 1–2 सेकंड में एप्लिकेशन को पुनरारंभ किए बिना UI को अपडेट करता है। C# Hot Reload (.NET 6+ से) प्रक्रिया को पुनरारंभ किए बिना एक विधि परिवर्तन को पुन: संकलित करता है। Visual Studio Debugger, Profiler और IntelliCode प्रदर्शन निदान और कोड गुणवत्ता के लिए टूलकिट को पूरक करते हैं।
अक्सर पूछे जाने वाले प्रश्न
.NET MAUI iOS, Android, Windows, macOS और Tizen के लिए C# और XAML में नेटिव एप्लिकेशन बनाने के लिए Microsoft का एक क्रॉस-प्लेटफ़ॉर्म फ्रेमवर्क है। यह Xamarin.Forms का उत्तराधिकारी है, .NET 6+ में निर्मित है और प्रत्येक प्लेटफ़ॉर्म के लिए अलग-अलग प्रोजेक्ट के बजाय एक एकल प्रोजेक्ट (Single Project) का उपयोग करता है।
.NET MAUI एक एकल प्रोजेक्ट, रेंडरर के बजाय Handlers, एक अंतर्निहित DI कंटेनर, iOS के लिए Native AOT और Blazor Hybrid का उपयोग करता है। Xamarin.Forms को प्रत्येक प्लेटफ़ॉर्म के लिए अलग-अलग प्रोजेक्ट की आवश्यकता होती है, UI अनुकूलन के लिए Custom Renderer, DI के लिए DependencyService का उपयोग करता है और Blazor का समर्थन नहीं करता है। .NET MAUI .NET का हिस्सा है, Xamarin.Forms एक अलग SDK है।
हाँ, .NET MAUI Mac Catalyst के माध्यम से macOS को सपोर्ट करता है (न्यूनतम संस्करण macOS 12.0)। MAUI पर iOS एप्लिकेशन कोड परिवर्तनों के बिना स्वचालित रूप से Mac के लिए संकलित होते हैं। देशी Mac सुविधाओं (Menu Bar, Dock, Touch ID) के लिए, Platforms/MacCatalyst फ़ोल्डर में Mac Catalyst और NSView रैपर के माध्यम से प्लेटफ़ॉर्म कॉल का उपयोग किया जाता है।
नहीं, .NET MAUI Dart/Flutter पैकेज के साथ संगत नहीं है। MAUI .NET पारिस्थितिकी तंत्र और NuGet पैकेज का उपयोग करता है। प्लेटफ़ॉर्म-विशिष्ट सुविधाओं (कैमरा, Bluetooth, बायोमेट्रिक्स) के लिए, Android Bindings (Kotlin/Java) और iOS Bindings (Objective-C/Swift) के माध्यम से देशी लाइब्रेरी का उपयोग किया जाता है। CommunityToolkit.Maui सामान्य परिदृश्यों के लिए रेडी-मेड रैपर प्रदान करता है।
प्रदर्शन में अंतर न्यूनतम है। iOS पर Handlers और Native AOT के साथ .NET MAUI देशी SwiftUI एप्लिकेशन के प्रदर्शन का 95–98% प्राप्त करता है। Android पर, Kotlin एप्लिकेशन के साथ अंतर UI रेंडरिंग परीक्षणों (Microsoft Benchmarks, 2024) में 3–7% है। अधिकांश व्यावसायिक एप्लिकेशन के लिए, अंतर उपयोगकर्ता के लिए ध्यान देने योग्य नहीं है।
सारांश
हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे
IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।
यह भी पढ़ें