الاثنين، 16 نوفمبر 2015

مقدمة إلى منصة Xamarin

مستوى المقالة: مبتدئ
المتطلبات السابقة لقراءة هذه المقالة:
-          إلمام بأساسيات لغة البرمجة C# وبيئة التطوير المتكاملة فيجوال ستوديو
-          إلمام بأساسيات التطوير لمنصة واحدة على الأقل من منصات الهواتف الذكية

في هذه المقالة سنتعرف على منصة زامارين Xamarin platform لتطوير تطبيقات الهواتف المحمولة، ولمتانة العلاقة بين Xamarin ولغة البرمجة سي شارب C# المطورة بواسطة مايكروسوفت، سأبدأ بالحديث أولاً عن لغة سي شارب. ثم سأنطلق بالحديث عن Xamarin.
ما الذي تستطيع تطويره باستخدام لغة سي شارب؟ ولماذا لغة سي شارب؟
لغة سي شارب هي مثال راقي – إن لم تكن الأرقى J – في عالم لغات البرمجة وتطوير المشاريع البرمجية، يمكنك بناء العديد من أنواع المشاريع المعتمدة على إطار عمل دوت نت .NET Framework باستخدام لغة سي شارب، تستطيع باستخدام سي شارب إنشاء تطبيقات سطح المكتب لنظام ويندوز، تطبيقات الويب، خدمات الويب، تطبيقات قواعد البيانات، تطبيقات الهواتف الذكية والكثير الكثير.
إذاً بالإمكان العمل مع لغة سي شارب لتطوير تطبيقات الهواتف الذكية، ولكن لأي منصة أو نظام تشغيل يمكن ذلك؟ لعل الإجابة البديهية هي نظام ويندوز فون بحكم أن كلاً من لغة سي شارب ونظام ويندوز فون تم تطويرهما بواسطة شركة مايكروسوفت! إجابة صحيحة، ولكن ماذا عن أنظمة التشغيل الأخرى، هل يمكن استخدام لغة C# للتطوير لنظام iOS من شركة Apple أو للتطوير لنظام Android من شركة Google؟ بكل تأكيد، وهذه هي المهمة التي تولتها منصة Xamarin. إذاً مع لغة برمجة أنيقة مثل لغة سي شارب تعمل مع إطار عمل رائع ومدعومة بشكل رسمي بواسطة بيئة التطوير المتكاملة – IDE – فيجوال ستوديو Visual Studio ، وتعمل على أكثر من 2.5 مليار جهاز، فإنه يمكننا القول بأن شركة Xamarin قد أحسنت اختيار لغة البرمجة التي ستدعمها منصة Xamarin لتطوير تطبيقات الهواتف الذكية.
إذاً منصة Xamarin هي منصة لتطوير تطبيقات الهواتف الذكية على منصات متعددة باستخدام لغة واحدة هي لغة سي شارب – عندما توفر تقنية ما إمكانية التطوير مرة واحدة ومن ثم النشر على أكثر من منصة، فإننا نقول أن هذه التقنية تدعم Cross-Platform Development أو بالعربية التطوير على منصات متعددة –، قد يقول قائل ما الجديد حتى الآن؟ توجد بعض أطر العمل التي توفر التطوير على منصات متعددة مثل Apache Cordova ! ما الذي يميز منصة Xamarin عن غيرها؟ الجواب أن منصة Xamarin توفر إمكانية تطوير تطبيقات أصيلة native apps، وبهذه الميزتين فقد جمعت منصة Xamarin الحُسْنَيين: Cross-Platform development + native app .
حسنا، تعرفنا الآن على مصطلح التطوير على منصات متعددة، ولكن ماذا نقصد بتطبيقات أصيلة native apps ؟ الإجابة ببساطة هي أن التطبيق الذي ستبنيه باستخدام منصة Xamarin لاستهداف منصة ما سيتم إنتاجه كما لو أنه طور باستخدام أدوات المطورين المخصصة للتطوير لتلك المنصة، إذاً لا فرق في الأداء أو واجهات المستخدم أو الوصول الغير مقيد لوظائف وواجهات النظام البرمجية بين تطبيق تم تطويره لنظام Android باستخدام أداوت المطورين الخاصة بنظام أندرويد ولغة جافا مثلاً وبين التطبيق الذي تم تطويره باستخدام منصة Xamarin ولغة سي شارب.
دعنا نفترض أن لديك تطبيق ترغب بتطويره لكي يعمل على جميع المنصات المتوفرة للهواتف الذكية Windows Phone ، iOS ، و Android. ما هي مقاربات أو طرق التطوير المتاحة لك.
المقاربةSilo
مقاربة Silo هي المقاربة التقليدية لتطوير تطبيقات الهواتف الذكية التي تعمل على منصات متعددة. تعتمد مقاربة Silo على استخدام أدوات المطورين المخصصة للتطوير لكل المنصة، وبالتالي فإننا نتحدث بيئات تطوير متعددة ومختلفة، وبالتالي مجموعات تطوير متعددة، انعدام في تشارك الأكواد، بطأ في إنجاز التطبيق، ومزيد من التكاليف. في المقابل، سنحصل على تطبيق أصيل. إذاً مع هذه المقاربة ستكون المهمة شاقة على الجهة المسؤولة عن تطوير التطبيق، ولكن سيتم الحصول على مخرجات كفؤة.
 


مقاربة الكتابة مرة واحدة والعمل على أماكن متعددة Write Once, Run Anywhere
هذه أسوأ مقاربة يمكن أن تستخدمها لتطوير تطبيقات الهواتف الذكية، يُستخدَم في هذه المقاربة تقنيات ولغات ليس لها أي علاقة بتطوير تطبيقات الهواتف الذكية، مثل الـ HTML، CSS، و JavaScript وينتج عنها تطبيقات غير أصيلة تعاني من بطء الأداء وتجربة مستخدم UX سيئة مع وصول مقيد لموارد وإمكانيات النظام.
 
مقاربة Xamarin
في المقاربة الأولى حصلنا على تطبيقات أصلية ولكن مع خسارة ميزة التطوير على منصات متعددة، وفي المقاربة الثانية حصلنا على ميزة التطوير على منصات متعددة، ولكن مع خسارة الحصول على تطبيقات أصيلة. ما قامت به Xamarin هو الجمع بين تلك الميزين، فأصبح بالإمكان تطوير تطبيقات أصيلة على منصات متعددة مع منصة Xamarin. لاحظ أن هذه المقاربة توفر إمكانية استخدام لغة سي شارب لتطوير الـ app logic أو الشيفرة الخلفية للتطبيق، ولكن لا توفر تشارك في استخدام اللغات الخاصة بتطوير واجهات المستخدم UI للتطبيق، فعند تطوير تطبيق للويندوز فون فإن خيار تطوير واجهة المستخدم في هذه الحالة هو XAML، وفي الأندرويد XML ، وفي iOS هو XIB. أيضا لابد من الإشارة إلى أن استخدام لغة سي شارب كلغة موحدة لكتابة الشفرة الخلفية لا يعني تطابق الشفرة الخلفية تماما عبر المنصات المختلفة، يوجد بعض التطابق، وأيضا يوجد بعض الاختلاف الذي يراعي خصوصية كل منصة عن الأخرى، ولكن في الأخير يضل الكود مكتوباً بلغة واحدة وهي لغة سي شارب. حتى الآن تعتبر هذه المقاربة ممتازة وشائعة الاستخدام لمطوري تطبيقات الهاتف المحمول باستخدام منصة Xamarin، ولكن دعونا نرى ما الذي سوف تقدمه المقاربة التالية من Xamarin أيضا.
 
 
المقاربة المثالية Xamarin.Forms
وهي الحل الجديد المقدم من Xamarin والذي أتاح إمكانية استخدام لغة واحدة لبرمجة الشفرة الخلفية – كما هو الحال مع المقاربة القديمة- ، وأيضا وفر خيارات موحدة لتطوير واجهات المستخدم لجميع المنصات، مع Xamarin.Forms يمكن تطوير واجهات المستخدم لجميع المنصات المختلفة باستخدام لغة سي شارب أو لغة XAML التي طورتها شركة مايكروسوفت أيضا.
 
بذلك تكون هذه نهاية المقالة، تحدثنا فيها عن منصة Xamarin ودعمها لتطوير تطبيقات أصيلة للهواتف الذكية على منصات متعددة باستخدام لغة سي شارب. في المقالة التالية سأتحدث عن بيئات التطوير المتكاملة الداعمة لمنصة Xamarin ، كما سنقوم باستعراض تطبيق Hello World لنظام الأندرويد، ومن ثم سنناقش عرض Xamarin للطلاب وطريقة الحصول عليه.

هناك 3 تعليقات: