في MVVMCROSS ، يتم استخدام كل من الروابط بطلاقة وروابط سويسرية/التبت لربط البيانات ، لكنها تختلف في مقاربتها واستخدامها. على الرغم من عدم وجود معلومات صريحة عن اختلافات الأداء بين هذين النوعين من الروابط ، يمكننا تحليل خصائصها لفهم الآثار المحتملة:
روابط بطلاقة
الروابط بطلاقة هي بناء جملة قائم على C#تتيح للمطورين إنشاء روابط في الكود. يعد هذا النهج مفيدًا بشكل خاص على منصات مثل iOS و OSX حيث تكون ملفات تخطيط XML غير قابلة للتكرار بسهولة. توفر الروابط بطلاقة طريقة آمنة من النوع لربط الخواص ، والتي يمكن أن تساعد في تقليل أخطاء وقت التشغيل عن طريق التقاط عدم تطابق النوع في وقت الترجمة. ومع ذلك ، نظرًا لأنها محددة في التعليمات البرمجية ، فقد تتطلب المزيد من النفقات العامة من حيث صيانة الكود مقارنة بالارتباطات التعريفية مثل السويسري/التبت.روابط سويسرية/التبت
روابط السويسرية والبت هي تعليمية ، مما يعني أنها محددة بتنسيقات XML أو سلسلة. هذه الروابط أكثر إيجازًا ويمكن تضمينها بسهولة في ملفات التصميم. يوفر بناء جملة ربط التبت ، على وجه الخصوص ، لغة تعبير أكثر ثراءً مع ميزات مثل استدعاء محول القيمة الشبيهة بالوظائف ، والربطات المتعددة ، وبناء جملة المشغل البسيط. يمكن أن يكون هذا النهج التصريحي أكثر كفاءة من حيث قابلية قراءة الكود وقابليته للصيانة ، حيث أن الروابط مرئية بشكل واضح في ملفات التخطيط.اعتبارات الأداء
على الرغم من عدم وجود بيانات محددة حول اختلافات الأداء بين روابط Fluent و Swiss/التبت ، فإن العوامل التالية قد تؤثر على الأداء:-الترجمة الزمنية مقابل دقة وقت التشغيل: بشكل عام ، قد توفر الروابط التي يتم حلها في وقت الترجمة (مثل بعض جوانب الارتباطات بطلاقة بسبب طبيعتها الآمنة من النوع) أداء أفضل مقارنة بدقة وقت التشغيل. ومع ذلك ، عادة ما يتم حل روابط MVVMCROSS في وقت التشغيل.
- النفقات العامة للانعكاس: من المحتمل أن تستخدم روابط Fluent و Swiss/التبت الانعكاس على الأرجح لحل أسماء الممتلكات. ومع ذلك ، قد يكون للربط بطلاقة ميزة طفيفة بسبب طبيعتها الآمنة من النوع ، مما قد يقلل من الحاجة إلى انعكاس واسع النطاق في وقت التشغيل.
- تعقيد تعبيرات الربط: تسمح روابط التبت بتعبيرات أكثر تعقيدًا ، والتي يمكن أن تضع حمولة إضافية بسبب تحليل هذه التعبيرات وتقييمها. ومع ذلك ، فإن هذا التعقيد يوفر أيضًا قدرات ربط بيانات أكثر قوة.
باختصار ، على الرغم من عدم وجود معايير أداء صريحة تقارن ارتباطات Fluent and Swiss/Tibet في MVVMCross ، فإن الارتباطات بطلاقة قد توفر مزايا بسيطة بسبب طبيعتها الآمنة من النوع وتخفيض محتمل في انعكاس وقت التشغيل. ومع ذلك ، فإن الطبيعة التعريفية لروابط السويسرية/التبت يمكن أن تحسن قابلية قراءة الكود وقابليتها للصيانة ، والتي قد تؤثر بشكل غير مباشر على كفاءة التطوير وأداء التطبيق العام عن طريق تقليل الأخطاء وتحسين جودة الكود. في النهاية ، يجب أن يعتمد الاختيار بين طرق الربط هذه على الاحتياجات المحددة للمشروع ، مثل تعقيد واجهة المستخدم ، والمنصة التي يتم استهدافها ، وتفضيلات الارتباطات القائمة على الكود مقابل الارتباطات التعريفية.
الاستشهادات:[1] http://slodge.blogspot.com/2013/06/tibet-binding.html
[2] https://github.com/mvvmcross/mvvmcross/issues/1342
[3] https://learn.microsoft.com/en-us/dotnet/maui/fundamentals/data-binding/compiled-bindings؟view=net-maui-9.0
[4] https://blog.ostebaronen.dk/2018/01/mvvmcross-binding-target.html
[5] https://stackoverflow.com/questions/46522577/mvvmcross-issues-with-fluent-binding
[6]
[7] https://www.mvvmcross.com/documentation/fundamentals/data-binding
[8] https://learn.microsoft.com/en-us/archive/msdn-magazine/2014/august/windows-phone-build-mvvm-apps-with-xamarin-and-mvvmcross
[9] https://www.mvvmcross.com/documentation/fundamentals/value-converters
[10] https://stackoverflow.com/questions/48422489/mvvmcross-tibet-binding-to-viewmodel-itself