Xamarin هي منصة Microsoft لإنشاء تطبيقات الهاتف المحمول بلغة C#، تم الإعلان عنها في 2011. وفقًا لـ Microsoft Xamarin Documentation, 2024، يسمح Xamarin بكتابة تطبيقات لنظامي iOS و Android و Windows بقاعدة تعليمات برمجية مشتركة بلغة C# و .NET، باستخدام Mono Runtime للتجميع إلى تعليمات برمجية أصلية. منذ 2024، تم استبدال Xamarin.Forms بـ .NET MAUI.
الخلاصة
Xamarin هي منصة تعتمد على .NET و Mono تسمح باستخدام C# لإنشاء تطبيقات المحمول عبر المنصات. تأسست شركة Xamarin في 2011 واشترتها Microsoft في 2016 مقابل 400 مليون دولار. بعد الاستحواذ، أصبح Xamarin جزءًا من نظام Visual Studio و Azure البيئي.
قبل الاستحواذ، كان Xamarin منتجًا تجاريًا بترخيص Enterprise. جعلته Microsoft مجانيًا كجزء من Visual Studio Community وفتحت أيضًا المصدر المفتوح لـ Mono Runtime وروابط SDK. أدى هذا إلى زيادة الشعبية: بحلول عام 2020، كان Xamarin يُستخدم في 15% من المشاريع عبر المنصات، وفقًا لتقرير SlashData.
الفكرة الرئيسية لـ Xamarin هي تقسيم التعليمات البرمجية إلى ثلاث طبقات: منطق الأعمال المشترك (C#, .NET Standard)، مشاريع خاصة بالمنصة (iOS، Android)، وواجهة مستخدم مشتركة اختيارية عبر Xamarin.Forms. هذا النهج سمح بإعادة استخدام ما يصل إلى 75% من التعليمات البرمجية مع الحفاظ على الوصول الأصلي لواجهات API لكل منصة.
الإصدار الأول Xamarin 1.0 صدر في 2012 مع دعم iOS فقط. تمت إضافة دعم Android في 2013. تم تقديم Xamarin.Forms — إطار عمل واجهة المستخدم التعريفي — في 2014 في مؤتمر Evolve. تضمن Xamarin 4.0 (2016) دعم watchOS و tvOS. قدم Xamarin 5.0 (2019) أنماط CSS وتصميم Material Design.
آخر إصدار رئيسي Xamarin.Forms 5.0 صدر في 2021. أعلنت Microsoft أن Xamarin يدخل وضع الصيانة (نهاية الحياة — 1 مايو 2024) وأوصت بالانتقال إلى .NET MAUI (Multi-platform App UI)، وهو جزء من .NET 6+. لم يعد Xamarin.Forms 5.0 يتلقى ميزات جديدة، فقط تصحيحات أمان حرجة.
Xamarin.Forms هو إطار عمل UI يجرد الواجهة من خلال مجموعة موحدة من المكونات. يتم تعيين ترميز XAML (ContentPage، StackLayout، Label، Button) إلى عناصر تحكم أصلية على كل منصة عبر العارضين. يتم ترجمة Label إلى UILabel على iOS و TextView على Android. هذا النهج يوفر ما يصل إلى 95% من تعليمات UI البرمجية المشتركة.
Xamarin.Native (أيضًا Xamarin.iOS و Xamarin.Android) هو نهج بدون UI مشترك. ينشئ المطور شاشات منفصلة لنظام iOS (Interface Builder أو Storyboard) و Android (AXML)، باستخدام خلفية C# واحدة. وهذا يمنح تحكمًا كاملاً في مظهر كل منصة ولكنه يزيد من تكرار تعليمات UI البرمجية إلى 50–60%.
وفقًا لـ استطلاع مطوري Microsoft 2023، استخدم 70% من مشاريع Xamarin Xamarin.Forms، واستخدم 20% Xamarin.Native مع خدمات مشتركة، واستخدم 10% نهجًا هجينًا مع عارضين مخصصين لتحسينات خاصة بالمنصة.
هندسة Xamarin تتكون من مستويين. المستوى السفلي هو Mono Runtime، الذي ينفذ C# IL (اللغة الوسيطة) على المنصة. المستوى العلوي يتكون من Managed Callable Wrappers (MCW) لنظام iOS و Android Bindings لنظام Android، والتي توفر الوصول إلى واجهات API الأصلية من تعليمات C# المدارة.
Mono هو تطبيق مفتوح المصدر لـ .NET Framework. في Xamarin، يعمل Mono كـ Common Language Runtime (CLR)، حيث يقوم بتحميل تجميعات C# وتجميعها إلى تعليمات آلية. على iOS، يقوم Mono بالتجميع المسبق (AOT) — إلى تعليمات ARM64 آلية، لأن Apple تمنع التجميع في الوقت المناسب (JIT) في تطبيقات المستخدم. على Android، يستخدم Mono التجميع JIT مع تحديد ملفات AOT.
روابط iOS (Xamarin.iOS) هي أغلفة C# لبيئة تشغيل Objective-C. يتم تمثيل كل فئة UIKit (UIView، UIViewController) بفئة مدارة في تجميع Xamarin.iOS.dll. يتم استدعاء محددات Objective-C من خلال آلية MessageUI. على Android، يستخدم Xamarin.Android Android Callable Wrappers (ACW) — جسر JNI بين C# و Java/Kotlin. يتم تغليف مكتبات Kotlin من خلال Android Bindings Library.
XAML (eXtensible Application Markup Language) هي لغة تعريفية لوصف UI. في Xamarin.Forms، يحدد XAML بنية الشاشة: الصفحات (ContentPage)، الحاويات (StackLayout، Grid، FlexLayout)، والعناصر (Label، Entry، Button، ListView). تتعامل التعليمات البرمجية الخلفية بلغة C# مع الأحداث (Clicked، PropertyChanged) وتدير ربط البيانات (Binding، Data Binding).
نمط MVVM هو البنية الموصى بها لـ Xamarin.Forms. يحتوي النموذج (Model) على البيانات، وتنفذ ViewModel واجهة INotifyPropertyChanged والأوامر (ICommand)، ويتم ربط العرض (XAML) من خلال BindingContext. يتيح تنفيذ ICommand عبر RelayCommand أو Prism DelegateCommand اختبار ViewModel دون تبعيات UI. توفر مكتبة Prism.Forms NavigationService و DialogService والنمطية.
using Xamarin.Forms;
namespace XamarinApp
{
public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
var label = new Label
{
Text = "Hello, Xamarin!",
FontSize = 24,
VerticalOptions = LayoutOptions.Center,
HorizontalOptions = LayoutOptions.Center
};
Content = new StackLayout
{
Children = { label }
};
}
}
}
لغة C# الموحدة — الميزة الرئيسية لـ Xamarin. يمكن لمطوري C# و .NET إنشاء تطبيقات محمولة دون تعلم Swift أو Kotlin أو Objective-C. يتم كتابة منطق الأعمال، والشبكات، وقواعد البيانات (SQLite عبر ORM)، والتشفير، والتسجيل مرة واحدة وإعادة استخدامها عبر جميع المنصات. وهذا يبسط صيانة واختبار التعليمات البرمجية.
الوصول إلى واجهات API الأصلية — يوفر Xamarin وصولاً بنسبة 100% إلى واجهات API لنظام iOS (Cocoa Touch) و Android (Android SDK) من خلال الروابط. عند إصدار نسخة جديدة من iOS أو Android، تنشر Microsoft روابط محدثة خلال 24–48 ساعة. للروابط المفقودة (مكتبات Objective-C أو Kotlin المخصصة)، يتم إنشاء Android Bindings Library أو iOS Binding Library يدويًا.
التكامل مع نظام Microsoft البيئي — يدعم Xamarin Visual Studio و Azure DevOps و App Center (CI/CD والاختبار والمراقبة) و Enterprise Mobility + Security (Intune و ADAL و MSAL). يجمع App Center Analytics و Crashes البيانات من التطبيقات الحية. يعمل Visual Studio App Center على أتمتة البناء والاختبار على الأجهزة والنشر في متاجر التطبيقات.
العيوب تشمل حجم التطبيق — ملف APK لتطبيق Xamarin.Forms بشاشة فارغة يزن 25–35 ميجابايت مقابل 5–8 ميجابايت لتطبيق Android الأصلي. وقت التجميع أعلى أيضًا: مشروع متوسط الحجم يُبنى في 2–5 دقائق مقابل 30–60 ثانية في Android Studio الأصلي. يضيف Mono Runtime 15–20 ميجابايت إلى الملف الثنائي النهائي.
العيب الثاني هو تأخير واجهات API الجديدة. تظهر ميزات iOS/Android الجديدة في التطوير الأصلي فورًا، بينما في Xamarin تصل بعد 1–2 شهر من إصدار الروابط. تم دعم iOS 17 SDK (2023) بالكامل بواسطة Xamarin بعد 3 أسابيع من الإصدار. للمشاريع العاجلة، قد يكون هذا حرجًا. يحل .NET MAUI هذه المشكلة من خلال التكامل المباشر مع .NET 8.
| المعيار | Xamarin | .NET MAUI |
|---|---|---|
| المنصات | iOS، Android، Windows | iOS، Android، Windows، macOS، Tizen |
| الإطار الأساسي | Mono + .NET Standard | .NET 6+ (BCL موحد) |
| إطار UI | Xamarin.Forms | .NET MAUI (الخليفة) |
| حالة الدعم | انتهى الدعم منذ 1 مايو 2024 | تطوير نشط من Microsoft |
| Hot Reload | محدود | XAML Hot Reload + C# Reload |
.NET MAUI (Multi-platform App UI) هو تطور Xamarin.Forms، الذي أصدرته Microsoft في 2022 مع .NET 6. يوحد MAUI iOS و Android و Windows و macOS في مشروع واحد دون مشاريع منفصلة لكل منصة. على عكس Xamarin.Forms، يستخدم MAUI .NET 6+ BCL بدلاً من Mono و .NET Standard.
توفر Microsoft أداة ترحيل — .NET Upgrade Assistant لـ Visual Studio. تقوم بتحليل مشروع Xamarin.Forms، واستبدال مساحات الأسماء (Xamarin.Forms.* -> Microsoft.Maui.*)، وتحديث ملفات .csproj (تنسيق نمط SDK)، وترحيل إعدادات Android و iOS إلى تكوين موحد. بعد الترحيل، يمكن للمشروع الاستفادة من جميع إمكانيات .NET 8 الجديدة: Native AOT و CodeQL للأمان وأداء بناء محسن.
التغيير الرئيسي هو مشروع واحد. بينما كان Xamarin.Forms يتطلب 3 مشاريع منفصلة (iOS، Android، .NET Standard)، يستخدم .NET MAUI مشروعًا واحدًا بمجلدات Platforms/iOS و Platforms/Android و Platforms/Windows و Platforms/MacCatalyst. يتم تجميع كل منصة من تعليمات برمجية مشتركة مع توجيهات شرطية خاصة بالمنصة (#if ANDROID، #if IOS).
لـ قواعد التعليمات البرمجية الحالية، يحافظ .NET MAUI على توافق عكسي بنسبة 90% مع Xamarin.Forms. يغطي توافق API ContentView و ContentPage و Shell و NavigationPage و DependencyService و MessagingCenter. أثرت التغييرات الرئيسية على Device.StartTimer (تم استبداله بـ IDispatcher)، و Platform API (تم نقله إلى Microsoft.Maui.ApplicationModel)، والعارضين المتقادمين (تم استبدالهم بـ Handlers).
عملية الترحيل تتضمن خمس خطوات. أولاً — تحديث Xamarin.Forms إلى أحدث إصدار 5.0. ثانيًا — استبدال .NET Standard 2.0 بـ .NET 6 أو 8. ثالثًا — تشغيل Upgrade Assistant للتحويل التلقائي للمشروع. رابعًا — إصلاح التعليمات البرمجية الخاصة بالمنصة في مجلدات Platforms. خامسًا — الاختبار، خاصة العارضين المخصصين وخدمات المنصة.
الأسئلة الشائعة
Xamarin هي منصة محمولة من Microsoft للتطوير بلغة C# لأنظمة iOS و Android و Windows. تستخدم Mono Runtime لتجميع التعليمات البرمجية المشتركة وتوفر نهجين: Xamarin.Forms (UI موحد عبر XAML) و Xamarin.Native (شاشات أصلية للمنصة). منذ 2024، Xamarin في وضع الصيانة.
Xamarin يستخدم C# و .NET، ويعرض من خلال عناصر تحكم أصلية (UIKit، View) عبر الروابط. يستخدم Flutter Dart ومحرك العرض الخاص به (Impeller)، دون الاعتماد على مكونات UI أصلية. يوفر Flutter مظهرًا موحدًا عبر جميع المنصات، بينما يوفر Xamarin المظهر الأصلي لكل نظام تشغيل. Flutter مدعوم من Google وتبلغ حصته 46% مقابل 15% لـ Xamarin.
لا. أوقفت Microsoft دعم Xamarin في 1 مايو 2024. يجب بدء جميع المشاريع الجديدة على .NET MAUI — خليفته، المضمن في .NET 8 والذي سيحصل على تحديثات مع منصة .NET. للمشاريع الحالية على Xamarin.Forms، يُوصى بالترحيل خلال 12–18 شهرًا.
الفرق ضئيل للتطبيقات العادية. يضيف Xamarin.Forms 5–10% عبء عرض بسبب طبقات Managed-Wrapper-Native. تظهر المشكلات مع القوائم الثقيلة (ListView مقابل RecyclerView) والرسوم المتحركة (باستخدام Xamarin.Forms بدون واجهات API للمنصة). يُوصى باستخدام CollectionView (الذي حل محل ListView) والرسوم المتحركة الأصلية.
نعم، من خلال Android Bindings Library. هذا النوع من مشاريع .NET يغلف أرشيفات AAR أو JAR في روابط C# مع توليد تلقائي للفئات والطرق. تتطلب مكتبات Kotlin معالجات إضافية للكوروتين والفئات المختومة، يتم تكوينها عبر Metadata.xml في Binding Library.
الملخص
سنقوم بتطوير تطبيق جوال جاهز
تقدم IT Sectr تطبيقات iOS وAndroid للشركات الناشئة والشركات منذ عام 2017. سوف نقدم لك النصح ونقترح أفضل حل.