لماذا C# ليس فقط خاص بـ Windows؟
\n\nلفترة طويلة، ارتبطت لغة C# حصريًا بنظام Microsoft البيئي و Windows. المطورون الذين أرادوا البرمجة لنظام Linux أو macOS كانوا يتجهون نحو Java أو Python أو JavaScript. لكن الأوقات تغيرت. مع إصدار .NET Core (ثم .NET 5/6/7/8) اتخذت Microsoft خطوة حاسمة نحو عالم المصادر المفتوحة والتعددية المنصات.
\n\nاليوم، C# هي لغة قوية وحديثة يمكنك من خلالها إنشاء كل شيء: بدءًا من الأدوات المساعدة لوحدة التحكم لخادم Linux وصولاً إلى تطبيقات الهواتف المحمولة لنظامي iOS و Android. وكل ذلك بلغة واحدة، وبيئة تطوير متكاملة واحدة (Rider أو VS Code)، والأهم من ذلك، بمنطق أعمال موحد.
\n\nفي هذه المقالة، سنستعرض التقنيات التي تتيح كتابة تطبيقات متعددة المنصات باستخدام C#، وسنقارن بينها، ونعرض كودًا حقيقيًا، ونقدم نصائح عملية. إذا كنت تعتقد أن C# هي "فقط لـ Windows"، فاستعد للدهشة.
\n\nتطور التعددية المنصات في .NET
\n\nكان طريق C# نحو التعددية المنصات طويلاً. دعنا نتذكر المحطات الرئيسية:
\n\n- \n
- Mono (2004) — أول تطبيق مفتوح المصدر لـ .NET Framework على Linux. كان يعمل ولكن مع قيود. \n
- Xamarin (2011) — سمح بكتابة تطبيقات الهواتف المحمولة باستخدام C# لنظامي iOS و Android. كان هذا اختراقًا حقيقيًا. \n
- .NET Core (2016) — إطار عمل معاد كتابته بالكامل، معياري، ومتعدد المنصات. مفتوح المصدر. \n
- .NET 5+ (2020) — توحيد جميع الفروع: .NET Framework و .NET Core و Xamarin اندمجت في .NET واحد. \n
- .NET MAUI (2022) — تطور لـ Xamarin.Forms لإنشاء واجهات مستخدم أصلية لجميع المنصات. \n
الآن، في عام 2024، لدينا مجموعة أدوات ناضجة للتطوير لأي منصة. دعنا نلقي نظرة على الخيارات الرئيسية.
\n\nالتقنيات الرئيسية للتطوير متعدد المنصات باستخدام C#
\n\nيعتمد اختيار التقنية على ما تقوم ببنائه بالضبط. سنسلط الضوء على أربعة اتجاهات رئيسية:
\n\n1. .NET MAUI — تطبيقات أصلية للهواتف المحمولة وسطح المكتب
\n\n.NET MAUI (واجهة مستخدم تطبيق متعددة المنصات) هو إطار عمل لإنشاء واجهات مستخدم تعمل على Android و iOS و macOS و Windows و (بشكل تجريبي) Linux. تقوم بكتابة ترميز XAML ومنطق C# مرة واحدة، وتحصل في النهاية على تطبيقات أصلية.
\n\nمثال على الكود: تطبيق عداد بسيط
\n\n<!-- MainPage.xaml -->\n<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"\n xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"\n x:Class="MauiApp1.MainPage">\n <VerticalStackLayout Padding="30" Spacing="25">\n <Label Text="مرحبًا، منصة متعددة!"\n FontSize="32"\n HorizontalOptions="Center"/>\n <Label x:Name="CounterLabel"\n Text="0"\n FontSize="48"\n HorizontalOptions="Center"/>\n <Button Text="اضغط علي"\n Clicked="OnCounterClicked"\n HorizontalOptions="Center"/>\n </VerticalStackLayout>\n</ContentPage>\n\n// MainPage.xaml.cs\nnamespace MauiApp1;\n\npublic partial class MainPage : ContentPage\n{\n private int _count = 0;\n\n public MainPage()\n {\n InitializeComponent();\n }\n\n private void OnCounterClicked(object sender, EventArgs e)\n {\n _count++;\n CounterLabel.Text = _count.ToString();\n }\n}\n\nهذا الكود سيعمل دون تغيير على iPhone وهاتف Android و MacBook وجهاز كمبيوتر يعمل بنظام Windows. بالنسبة لـ Linux، ستحتاج إلى إعداد إضافي، لكن المجتمع يعمل بنشاط على ذلك.
\n\n2. Avalonia UI — سطح مكتب لنظامي Windows و Linux و macOS بتصميم فريد
\n\nAvalonia هو إطار عمل مفتوح المصدر مستوحى من WPF، ولكنه متعدد المنصات بالكامل. ميزته الرئيسية: أنه لا يحاكي عناصر التحكم الأصلية، بل يرسم واجهته الخاصة عبر SkiaSharp. وهذا يمنحه تحكمًا كاملاً في التصميم.