.NET MAUI — ما هو، البنية والتطوير عبر المنصات

المؤلف: IT Sectr نُشر: 2026-05-01 وقت القراءة: 8 دق

.NET MAUI هو إطار عمل متعدد المنصات من Microsoft لإنشاء تطبيقات أصلية بلغة C# و XAML، تم إطلاقه في 2022 مع .NET 6. وفقًا لـ توثيق Microsoft .NET MAUI، 2024، يدعم MAUI iOS و Android و Windows و macOS و Tizen، ليجمعها في مشروع واحد بقاعدة أكواد مشتركة. الإطار هو الخليفة المباشر لـ Xamarin.Forms.

النقاط الرئيسية

  • .NET MAUI — خليفة Xamarin.Forms، مدمج في .NET 6+ بدون SDK منفصل
  • Single Project موحد يحل محل ثلاثة مشاريع منفصلة للمنصات
  • يتم استخدام XAML و C# لبناء واجهة المستخدم التصريحية ومنطق الأعمال
  • Handlers حلت محل محركات العرض القديمة لـ Xamarin.Forms لتجريد المنصة
  • دعم 5 منصات: iOS و Android و Windows و macOS و Tizen

ما هو .NET MAUI

.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 (مكتبة الفئات الأساسية). يحصل المطورون على إمكانية الوصول إلى System.Text.Json و System.Net.Http و System.Linq و System.IO وواجهات برمجة التطبيقات الأخرى مباشرة بدون SDK إضافي. استخدم Xamarin.Forms .NET Standard 2.0 للمنطق المشترك، مما حد من الوصول إلى إمكانيات منصة .NET الجديدة.

وفقًا لـ Microsoft Build 2024، يتم استخدام .NET MAUI في أكثر من 40,000 تطبيق في App Store و Google Play. من بين المشاريع المعروفة UPS Mobile و The Weather Channel و Siemens Teamcenter. تعمل Microsoft بنشاط على تطوير MAUI كجزء من .NET 9، المقرر إطلاقه في نوفمبر 2024.

تاريخ وأصل .NET MAUI

تم الإعلان عن .NET MAUI في Microsoft Build 2020 كجزء من استراتيجية توحيد .NET. دمجت Microsoft .NET Core و Mono و .NET Framework في منصة واحدة .NET 5+. أصبح Xamarin.Forms أساسًا لـ MAUI، لكن قاعدة الأكواد أعيدت كتابتها بالكامل: تمت إزالة واجهات برمجة التطبيقات القديمة، واستبدال محركات العرض بـ Handlers، واستبدال DependencyService بحاوية DI.

.NET MAUI 8 (نوفمبر 2023) أضاف دعم Native AOT، وأداء محسن لـ CollectionView، و Blazor Hybrid (تضمين مكونات Blazor في تطبيق MAUI)، وتعيين خطوط جديد. .NET MAUI 9 (2024) يتضمن دعم C# 12، وتكامل محسن مع WinUI 3 و macOS Sonoma، وواجهة برمجة تطبيقات جديدة للسحب والإفلات لجميع المنصات.

الفرق بين .NET MAUI و Xamarin.Forms

الفرق الأول هو التطبيق الموحد. في Xamarin.Forms، كانت iOS و Android تتطلبان مشروعين منفصلين في حل واحد. في .NET MAUI، مشروع واحد مع مجلدات المنصة. هذا يبسط التنقل في الأكواد وإدارة التبعيات وخطوط أنابيب CI/CD. يستخدم ملف .csproj تنسيق SDK-style مع TargetFrameworks: net8.0-android و net8.0-ios و net8.0-maccatalyst.

الفرق الثاني هو بنية العرض باستخدام 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 MAUI تستند إلى نموذج متعدد الطبقات. الطبقة السفلية هي .NET BCL و Mono Runtime (Android) / CoreCLR (Windows) / NativeAOT (iOS). الطبقة الوسطى هي Microsoft.Maui.dll مع جوهر الإطار: Handlers و Layout و Graphics و Controls. الطبقة العليا هي تطبيق المطور مع صفحات XAML و ViewModel والخدمات.

Single Project و Multi-Targeting

Single Project هي ميزة معمارية رئيسية لـ .NET MAUI. تنقسم جميع الملفات إلى ثلاث فئات: الأكواد المشتركة (Shared)، وأكواد المنصة (Platforms)، والموارد (Resources). يحدد Multi-targeting في .csproj المنصات التي سيتم بناء التطبيق لها. تقوم كل منصة بتجميع مجلد 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 و MVVM في .NET MAUI

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، مولّدًا ObservableObject بدون Reflection. هذا يسرع Binding بنسبة 30% مقارنة بالتنفيذ اليدوي.

مثال تطبيق على .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 = "انقر علي",
                    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+. تستخدم كل منصة مجموعتها الخاصة من عناصر التحكم وواجهات برمجة التطبيقات. iOS يستخدم UIKit عبر Mac Catalyst، Android — AndroidX عبر Xamarin.Android، Windows — WinUI 3، macOS — AppKit عبر Mac Catalyst.

على iOS و Android، يستخدم MAUI نفس آليات العرض مثل Xamarin.Forms — عناصر تحكم UI أصلية. ومع ذلك، توفر Handlers تخصيصًا أكثر مرونة. لتكوين Button الخاص بالمنصة على iOS، يتم استخدام OnPlatform<Button> مع PlatformConfiguration.iOS. بالنسبة لـ Windows، يستخدم MAUI WinUI 3 — إطار عمل UI حديث من Microsoft مع دعم Fluent Design System.

تمت إضافة دعم macOS عبر Mac Catalyst — تقنية Apple التي تشغل تطبيقات UIKit على Mac. هذا يسمح بإعادة استخدام 100% من أكواد iOS الخاصة بـ MAUI لإصدار macOS من التطبيق. للوظائف الخاصة بـ Mac (Menu Bar، Touch Bar)، يوفر MAUI واجهات برمجة تطبيقات المنصة عبر Mac Catalyst وأغلفة NSView.

Tizen هي منصة Samsung للتلفاز الذكي والهواتف الذكية والساعات الذكية. تم تنفيذ دعم Tizen في .NET MAUI عبر Samsung Tizen .NET. يتم تجميع تطبيقات MAUI لـ Tizen عبر روابط Samsung TizenFX. ومع ذلك، Tizen ليست منصة أولوية لـ Microsoft — يتم إصدار التحديثات لها بتأخير 1–2 شهر.

المنصةالحد الأدنى للإصدارإطار عمل UIالحالة
iOSiOS 15.0UIKit (Mac Catalyst)مستقر
AndroidAPI 21 (5.0)AndroidX / Material 3مستقر
WindowsWin 10 1809WinUI 3 / Fluent Designمستقر
macOSmacOS 12.0AppKit (Mac Catalyst)مستقر
TizenTizen 6.5TizenFX / Samsungإضافي

مزايا .NET MAUI

قاعدة أكواد موحدة — .NET MAUI يقلل من تكرار الأكواد. مشروع واحد بلغة C# و XAML يتم تجميعه لـ 5 منصات، مما يوفر ما يصل إلى 95% من الأكواد المشتركة للتطبيقات ذات واجهة المستخدم البسيطة. منطق الأعمال والخدمات ونماذج البيانات وعملاء HTTP موجودة في الأكواد المشتركة. فقط الميزات الخاصة بالمنصة (الكاميرا، تحديد الموقع الجغرافي، القياسات الحيوية) تتطلب تطبيقات منفصلة عبر DI.

أداء .NET MAUI أعلى من Xamarin.Forms. تقلل Handlers من الحمل الزائد للعرض: تظهر اختبارات Microsoft تقليلًا بنسبة 20–30% في وقت عرض الشاشة مقارنة بـ Xamarin.Forms 5.0. Native AOT على iOS يترجم أكواد C# مباشرة إلى تعليمات ARM64، مما يلغي تجميع JIT ويقلل وقت التشغيل بنسبة 40%.

Blazor Hybrid هي قدرة فريدة لـ .NET MAUI. BlazorWebView يدمج مكونات Blazor مباشرة في تطبيق MAUI. يمكن لمطوري الواجهات الأمامية إعادة استخدام مكونات Blazor (صفحات Razor، التفاعل مع JS، أنماط CSS) في التطبيق المحمول. يعمل Blazor Hybrid على جميع منصات MAUI الخمس دون تغيير أكواد مكونات Blazor.

نظام .NET البيئي — الوصول إلى آلاف حزم NuGet: Entity Framework Core للتعامل مع قواعد البيانات، Serilog للتسجيل، Polly لإعادة محاولات طلبات HTTP، FluentValidation للتحقق من الصحة. CommunityToolkit.Maui يوفر عناصر UI جاهزة: Popup، Toast، Snackbar، SemanticScreenReader لإمكانية الوصول. يتكامل .NET MAUI مع Azure و SignalR و Microsoft Graph SDK.

أدوات التطوير — Visual Studio 2022 و Rider من JetBrains. XAML Hot Reload يحدث واجهة المستخدم دون إعادة تشغيل التطبيق خلال 1–2 ثانية. C# Hot Reload (من .NET 6+) يعيد ترجمة تغيير الطريقة دون إعادة تشغيل العملية. Visual Studio Debugger و Profiler و IntelliCode يكملون مجموعة أدوات تشخيص الأداء وجودة الأكواد.

الأسئلة الشائعة

ما هو .NET MAUI؟

.NET MAUI هو إطار عمل متعدد المنصات من Microsoft لإنشاء تطبيقات أصلية بلغة C# و XAML لأنظمة iOS و Android و Windows و macOS و Tizen. إنه خليفة Xamarin.Forms، مدمج في .NET 6+ ويستخدم مشروعًا واحدًا (Single Project) بدلاً من مشاريع منفصلة لكل منصة.

كيف يختلف .NET MAUI عن Xamarin.Forms؟

.NET MAUI يستخدم مشروعًا واحدًا، Handlers بدلاً من محركات العرض، حاوية DI مدمجة، Native AOT لنظام iOS و Blazor Hybrid. يتطلب Xamarin.Forms مشاريع منفصلة لكل منصة، ويستخدم Custom Renderer لتخصيص واجهة المستخدم، و DependencyService لـ DI ولا يدعم Blazor. .NET MAUI جزء من .NET، Xamarin.Forms هو SDK منفصل.

هل يدعم .NET MAUI نظام macOS؟

نعم، .NET MAUI يدعم macOS عبر Mac Catalyst (الحد الأدنى للإصدار macOS 12.0). يتم تجميع تطبيقات iOS على MAUI تلقائيًا لنظام Mac دون تغيير الأكواد. للوظائف الأصلية لنظام Mac (Menu Bar، Dock، Touch ID)، يتم استخدام استدعاءات المنصة عبر Mac Catalyst وأغلفة NSView في مجلد Platforms/MacCatalyst.

هل يمكن استخدام حزم Flutter في .NET MAUI؟

لا، .NET MAUI غير متوافق مع حزم Dart/Flutter. يستخدم MAUI نظام .NET البيئي وحزم NuGet. للميزات الخاصة بالمنصة (الكاميرا، Bluetooth، القياسات الحيوية)، يتم استخدام المكتبات الأصلية عبر Android Bindings (Kotlin/Java) و iOS Bindings (Objective-C/Swift). يوفر CommunityToolkit.Maui أغلفة جاهزة للسيناريوهات الشائعة.

هل .NET MAUI أبطأ من التطبيق الأصلي؟

الفرق في الأداء ضئيل. .NET MAUI مع Handlers و Native AOT على iOS يحقق 95–98% من أداء تطبيق SwiftUI الأصلي. على Android، الفرق مع تطبيق Kotlin هو 3–7% في اختبارات عرض UI (Microsoft Benchmarks، 2024). بالنسبة لمعظم تطبيقات الأعمال، الفرق غير ملحوظ للمستخدم.

الملخص

  • .NET MAUI — إطار عمل متعدد المنصات من Microsoft بلغة C# و XAML، خليفة Xamarin.Forms
  • Single Project مع multi-targeting يحل محل 3 مشاريع منفصلة بتكوين واحد
  • Handlers توفر عرضًا أسرع من محركات عرض Xamarin.Forms
  • Blazor Hybrid يسمح بتضمين مكونات الويب مباشرة في تطبيق محمول
  • 5 منصات — iOS 15+ و Android 5.0+ و Windows 10 و macOS 12+ و Tizen 6.5+
  • Native AOT على iOS يقلل وقت التشغيل بنسبة 40% وحجم الملف الثنائي
  • اختر .NET MAUI لمشاريع .NET التي تتطلب إمكانيات عبر المنصات والوصول إلى واجهات برمجة التطبيقات الأصلية

سنقوم بتطوير تطبيق جوال جاهز

تقدم IT Sectr تطبيقات iOS وAndroid للشركات الناشئة والشركات منذ عام 2017. سوف نقدم لك النصح ونقترح أفضل حل.

مناقشة المشروع

اقرأ أيضًا