عند مقارنة استخدام MVVMcross مع Xamarin.forms و Xamarin الأصلي ، تظهر عدة اختلافات رئيسية ، في المقام الأول من حيث مرونة واجهة المستخدم ، ومشاركة الكود ، ونهج التطوير.
واجهة المستخدم المرونة والتحكم
- Xamarin.Forms: يوفر هذا الإطار طبقة واجهة المستخدم المشتركة عبر الأنظمة الأساسية ، مما يبسط التطوير من خلال السماح لك بكتابة رمز واجهة المستخدم مرة واحدة ونشره على منصات متعددة. ومع ذلك ، يمكن أن تحد واجهة المستخدم المشتركة هذه التخصيص على ميزات خاصة بالنظام الأساسي ، وتتطلب من العارضين المخصصين لعناصر واجهة المستخدم أكثر تقدمًا [7] [9]. يمكن استخدام MVVMCROSS مع xamarin.forms لإدارة منطق الأعمال والتنقل ، ولكن يظل واجهة المستخدم موحدة عبر المنصات [1] [10].
- Xamarin الأصلي: عند استخدام Xamarin Native مع MVVMcross ، لديك تحكم كامل في واجهة المستخدم لكل منصة. يسمح ذلك بتطبيقات واجهة المستخدم الخاصة بالمنصة ، مما يزيد من المظهر والشعور الأصليين لكل منصة. على الرغم من أن هذا النهج يتطلب مزيدًا من الجهد لتطوير طبقات واجهة مستخدم منفصلة لنظام التشغيل iOS و Android ، إلا أنه يوفر مرونة وتخصيصًا أكبر [7] [9].
مشاركة الكود وإعادة استخدامها
- xamarin.forms: مع Xamarin.forms ، يمكنك مشاركة منطق الأعمال فقط (عبر MVVMcross) ولكن أيضًا رمز واجهة المستخدم عبر الأنظمة الأساسية. هذا يبسط التطور ويقلل من كمية الكود الذي تحتاج إلى الحفاظ عليه. ومع ذلك ، يقتصر واجهة المستخدم على مجموعة شائعة من العناصر التي تعمل في جميع المنصات [4] [10].
- Xamarin الأصلي: في إعداد Xamarin الأصلي مع MVVMcross ، يمكنك مشاركة منطق الأعمال (ViewModels) عبر المنصات ، ولكن يجب عليك تنفيذ واجهة المستخدم بشكل منفصل لكل منصة. يسمح هذا النهج بمزيد من إعادة استخدام التعليمات البرمجية في طبقة العرض التقديمي ومنطق واجهة المستخدم عند استخدام MVVMCROSS ، ولكن لا يزال يتطلب تطوير واجهة المستخدم الخاصة بالمنصة [9].
نهج التنمية
- Xamarin.Forms: غالبًا ما يفضل المطورين من خلال التطوير باستخدام Xamarin.Forms و MVVMcross دون تجربة واسعة النطاق ، لأنه يبسط تطوير واجهة المستخدم عبر المنصات. يعالج الإطار الكثير من التعقيد الأساسي ، مما يسمح للمطورين بالتركيز على المنطق المشترك وواجهة المستخدم [4] [10].
-Xamarin الأصلي: عادةً ما يتم تفضيل تطوير Xamarin الأصلي مع MVVMcross من قبل المطورين الذين يريدون السيطرة الدقيقة على واجهة المستخدم ومريحة مع التطوير الخاص بالمنصة. يتطلب هذا النهج مزيدًا من الخبرة في تطوير iOS و Android الأصلي ، ولكنه يوفر مرونة أكبر في تصميم واجهة المستخدم وتنفيذها [7] [9].
التنقل والربط
- xamarin.forms مع mvvmcross: التنقل في xamarin.forms مع mvvmcross تتم إدارة على مستوى ViewModel ، مما يسمح بفصل نظيف للمخاوف. يوفر MVVMCROSS إمكانات ربط محسّنة ، مثل قيم الاحتياط ، على الرغم من أنها تفتقر إلى بعض الميزات مثل خاصية المصدر الموجودة في روابط Xamarin.forms القياسية [2] [10].
- Xamarin Native مع MVVMcross: في مشاريع Xamarin الأصلية ، يقوم MVVMCross بمقابض التنقل وإقران العرض/viewmodel ، مما يتيح بنية MVVM متسقة عبر المنصات. يمكّن هذا الإعداد المطورين من الاستفادة من أنماط التنقل الخاصة بالمنصة مع الحفاظ على طبقة منطق أعمال مشتركة [3] [9].
باختصار ، على الرغم من أن كلا النهجين يمكن أن يستفيدان من MVVMCROSS لهندسة MVVM ، فإن Xamarin.Forms تقدم طبقة واجهة المستخدم المشتركة مع تحكم أقل في ميزات واجهة المستخدم الخاصة بالمنصة ، في حين توفر Xamarin Native تحكمًا كاملاً في تخصيص واجهة المستخدم ولكن يتطلب المزيد من جهد التطوير لتطبيقات واجهة المستخدم المنفصلة.
الاستشهادات:[1] https://www.mvvmcross.com/documentation/platform/xamarin.forms/xamarin-forms
[2] https://www.xamarinhelp.com/use-xamarin-forms-mvvm-framework/
[3] https://canbilgin.wordpress.com/tag/mvvmcross/
[4] https://www.mvvmcross.com/documentation/getting-started/getting-started
[5]
[6]
[7] https://stackoverflow.com/questions/38450264/xamarin-forms-vs-xamarin-mvvmcross
[8]
[9]
[10] https://visualstudiomagazine.com/articles/2018/05/08/build-a-xamarin.forms-application.aspx