عند مقارنة أداء الارتباطات بطلاقة مع تعبيرات الربط السويسري/التبت في MVVMCROSS ، يتم تشغيل عدة عوامل. هذا انهيار مفصل:
نظرة عامة على أنواع الربط
- روابط بطلاقة: هذه تعبيرات ملزمة آمنة من النوع تم إنشاؤها في رمز C#. إنها مفيدة بشكل خاص على منصات مثل iOS و UWP حيث لا يمكن تحرير ملفات تخطيط XML بسهولة. توفر الارتباطات بطلاقة طريقة واضحة ومغطاة بقوة لربط خصائص العرض لعرض خصائص النموذج ، والتي يمكن أن تساعد في تقليل أخطاء وقت التشغيل عن طريق التقاط عدم تطابق النوع في وقت الترجمة [1] [4].
- تعبيرات الربط السويسري/التبت: هذه هي تعبيرات الربط المستندة إلى السلسلة المستخدمة عادة في ملفات تخطيط XML (على سبيل المثال ، Android AXML). الروابط السويسرية أكثر مرونة وتسمح بتعبيرات معقدة مثل التسلسل والمنطق الشرطي. يمتد ربط التبت هذا من خلال دعم بناء الجملة الأكثر تقدماً مماثلة باللغة الصغيرة للتعبيرات الربط [1] [6].
مقارنة الأداء
وقت التجميع مقابل تقييم وقت التشغيل
- روابط بطلاقة: نظرًا لأن الروابط بطلاقة محددة في C#، يتم تقييمها في وقت الترجمة. هذا يعني أن أي أخطاء في النوع أو مشاكل الربط يتم اكتشافها مبكرًا ، مما يحسن كفاءة التنمية. ومع ذلك ، فإن الأداء الفعلي في وقت التشغيل يشبه عمومًا طرق الربط الأخرى لأن إعداد الربط لا يزال يتم تنفيذه في وقت التشغيل.
- روابط سويسرية/التبت: يتم تقييم هذه الروابط في وقت التشغيل لأنه يتم تعريفها على أنها سلاسل في ملفات XML. هذا يعني أن أي أخطاء في تعبيرات الربط يتم اكتشافها فقط عند تشغيل التطبيق ، مما قد يؤدي إلى دورات تطوير أبطأ إذا لم يتم اختبارها بشكل صحيح. ومع ذلك ، فإن تقييم وقت التشغيل لا يجعلها بطبيعتها أبطأ من الارتباطات بطلاقة بمجرد إعداد الروابط.
وقت التشغيل النفقات العامة
- الارتباطات بطلاقة: تكون النفقات العامة للروابط بطلاقة ضئيلة لأنها تنشئ مباشرة كائنات الربط الضرورية في الكود. يمكن أن يكون هذا النهج المباشر أكثر كفاءة من تعبيرات سلسلة التحليل في وقت التشغيل.
- روابط سويسرية/التبت: تتطلب ذلك تحليل تعبيرات الربط من XML في وقت التشغيل ، والذي يقدم بعض النفقات العامة مقارنة بالروابط بطلاقة. ومع ذلك ، فإن هذه النفقات العامة عادة ما تكون صغيرة ما لم تتعامل مع الارتباطات المعقدة أو العديدة للغاية.
كفاءة التنمية ومعالجة الأخطاء
- روابط بطلاقة: توفير كفاءة تطوير أفضل بسبب عمليات التجميع في وقت الترجمة ، والتي يمكن أن تحسن الأداء بشكل غير مباشر عن طريق تقليل الوقت الذي يقضيه قضايا ربط وقت تشغيل تصحيح الأخطاء.
- روابط سويسرية/التبت: على الرغم من أنها أكثر مرونة للتعبيرات المعقدة ، فإنها تتطلب المزيد من عمليات فحص وقت التشغيل ويمكن أن تؤدي إلى تطوير أبطأ إذا لم يتم اختبارها بشكل صحيح.
خاتمة
من حيث الأداء الخام ، تكون كل من روابط Fluent و Swiss/التبت قابلة للمقارنة بشكل عام بمجرد إعدادها. ومع ذلك ، توفر الروابط بطلاقة مزايا في كفاءة التنمية والكشف عن خطأ في وقت الترجمة ، والتي يمكن أن تحسن بشكل غير مباشر أداء التطبيق بشكل غير مباشر عن طريق تقليل وقت تصحيح الأخطاء. توفر روابط السويسرية/التبت مرونة أكبر في السيناريوهات المعقدة ولكنها تتطلب المزيد من عمليات فحص وقت التشغيل. يعتمد الاختيار بينهما غالبًا على الاحتياجات المحددة للمشروع وتفضيل المطور لتعريفات الربط المستندة إلى الكود مقابل XML.
الاستشهادات:[1] https://blog.ostebaronen.dk/2018/01/mvvmcross-binding-target.html
[2] https://stackoverflow.com/questions/46522577/mvvmcross-issues-with-fluent-binding
[3] https://stackoverflow.com/questions/48422489/mvvmcross-tibet-binding-to-viewmodel-itself
[4] https://www.mvvmcross.com/documentation/fundamentals/data-binding
[5] https://www.youtube.com/watch؟v=3-ct97sbmxm
[6] https://stackoverflow.com/questions/48824612
[7] https://github.com/mvvmcross/mvvmcross/issues/1342
[8] https://github.com/mvvmcross/mvvmcross
[9] https://www.mvvmcross.com/documentation/fundamentals/value-converters
[10] https://stackoverflow.com/questions/48066268/xamarin-mvmcross-fluent-binding-on-uwp
[11] https://crosscuttingconcerns.com/mvvmcross-fluent-databinding