Az MVVMCross -ban mind a folyékony, mind a svájci/tibeti kötéseket használják az adatkötéshez, ám megközelítésükben és használatukban különböznek egymástól. Noha nincs kifejezett információ a teljesítménybeli különbségekről e két típusú kötés között, elemezhetjük jellemzőiket a lehetséges következmények megértése érdekében:
folyékony kötések
A folyékony kötések egy C#-alapú szintaxis, amely lehetővé teszi a fejlesztők számára, hogy kötéseket hozzanak létre a kódban. Ez a megközelítés különösen hasznos olyan platformokon, mint az iOS és az OSX, ahol az XML elrendezési fájlok nem könnyen kezelhetők. A folyékony kötések egy típusú biztonságos utat biztosítanak a tulajdonságok megkötéséhez, ami elősegítheti a futási idő hibáinak csökkentését azáltal, hogy a típusú eltéréseket a fordítási idő alatt elkapja. Mivel azonban a kódban definiálják őket, a kódkarbantartás szempontjából több általános költséget igényelhetnek a deklaratív kötésekhez képest, mint például a svájci/tibet.svájci/tibeti kötések
A svájci és a tibeti kötések deklaratívak, azaz XML vagy karakterlánc formátumban vannak meghatározva. Ezek a kötések tömörebbek és könnyen beágyazhatók az elrendezési fájlokba. Különösen a Tibet-kötő szintaxis gazdagabb kifejezési nyelvet kínál olyan funkciókkal, mint a funkciószerű érték-konverter hívás, a többkötés és az egyszerű operátor szintaxis. Ez a deklaratív megközelítés hatékonyabb lehet a kódolvashatóság és a karbantarthatóság szempontjából, mivel a kötések jól láthatók az elrendezési fájlokban.Teljesítmény megfontolások
Noha a folyékony és a svájci/tibeti kötések közötti teljesítménybeli különbségekről nincsenek speciális adatok, a következő tényezők befolyásolhatják a teljesítményt:-A fordítás-idő vs. futásidejű felbontás: Általában véve az összeállítási időkben oldott kötések (mint például a folyékony kötések egyes aspektusai a típusú biztonságos jellegük miatt) jobb teljesítményt nyújthatnak a futásidejű felbontáshoz képest. Az MVVMCross kötéseit azonban általában futás közben oldják meg.
- A reflexió fölött: mind a folyékony, mind a svájci/tibeti kötés valószínűleg a reflexiót használja az ingatlannevek megoldására. A folyékony kötéseknek azonban kissé biztonságos jellege miatt lehetnek enyhe előnye, ami potenciálisan csökkenti a futásidejűleg kiterjedt reflexió szükségességét.
- A kötési kifejezések bonyolultsága: A tibetkötések bonyolultabb kifejezéseket tesznek lehetővé, amelyek potenciálisan további általános költségeket vezethetnek be ezen kifejezések elemzése és értékelése miatt. Ez a bonyolultság azonban erősebb adatkötési képességeket is biztosít.
Összefoglalva: bár nincsenek kifejezett teljesítményű referenciaértékek, amelyek összehasonlítják a folyékony és a svájci/tibeti kötéseket az MVVMCross-ban, a folyékony kötések enyhe előnyöket kínálhatnak, mivel azok biztonságos jellege és a futásidejű reflexió esetleges csökkenése. A svájci/tibeti kötések deklaratív jellege azonban javíthatja a kódolvashatóságot és a karbantarthatóságot, ami közvetett módon befolyásolhatja a fejlesztési hatékonyságot és az alkalmazás teljes teljesítményét azáltal, hogy csökkenti a hibákat és javítja a kódminőséget. Végül a kötési módszerek közötti választásnak a projekt sajátos igényein kell alapulnia, mint például a felhasználói felület komplexitása, a megcélzott platform és a kód-alapú deklaratív kötések preferenciája.
Idézetek:[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] https://www.reddit.com/r/businessintelligence/comments/ky0dq9/is_it_a_best_practice_to_connect_with_views/
[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-telf