V MVVMCross sa na väzbu údajov používajú plynulé väzby aj švajčiarske viazania/Tibet, ale líšia sa vo svojom prístupe a využívaní. Aj keď neexistujú výslovné informácie o rozdieloch výkonnosti medzi týmito dvoma typmi väzieb, môžeme analyzovať ich charakteristiky, aby sme pochopili potenciálne dôsledky:
Fluent Bindings
Fluentné väzby sú syntax založenej na C#, ktorá umožňuje vývojárom vytvárať viazanie v kóde. Tento prístup je obzvlášť užitočný na platformách ako iOS a OSX, kde súbory rozloženia XML nie sú ľahko ľudské. Fluentné väzby poskytujú typ bezpečný spôsob viazania vlastností, čo môže pomôcť znížiť chyby runtime chytením nesúladu typu v čase kompilácie. Keďže sú však definované v kóde, môžu si vyžadovať viac režijných nákladov, pokiaľ ide o údržbu kódu v porovnaní s deklaratívnymi väzbami, ako je švajčiarsky/Tibet.Viazanie švajčiarskych/tibetov
Viazania švajčiarskych a tibetov sú deklaratívne, čo znamená, že sú definované vo formátoch XML alebo reťazca. Tieto viazania sú stručnejšie a môžu byť ľahko vložené do súborov rozloženia. Najmä syntax viazania Tibetu ponúka bohatší výrazový jazyk s funkciami, ako je volanie prevodníka podobnej funkcie, volania viacerých väzieb a syntax jednoduchej operátora. Tento deklaratívny prístup môže byť efektívnejší z hľadiska čitateľnosti a udržiavateľnosti kódu, pretože viazania sú jasne viditeľné v súboroch rozloženia.Úvahy o výkone
Aj keď neexistujú špecifické údaje o rozdieloch vo výkonnosti medzi plynulými a švajčiarskymi viazaniami, tieto faktory by mohli ovplyvniť výkonnosť nasledujúce faktory:-Compile-Time verzus Runtime Resolution: Všeobecne by väzby, ktoré sú vyriešené v čase kompilácie (podobne ako niektoré aspekty plynulých väzieb v dôsledku ich typu bezpečnej povahy) môžu ponúknuť lepší výkon v porovnaní s rozlíšením runtime. Väzby MVVMCross sa však zvyčajne vyriešia za behu.
- Riadenie reflexie: Fluentné aj švajčiarske viazania/Tibet Pravdepodobne používajú reflexiu na vyriešenie názvov vlastností. Fluentné väzby však môžu mať malú výhodu v dôsledku ich povahy bezpečnej typu, čo by potenciálne znížilo potrebu rozsiahlej reflexie za behu.
- Zložitosť väzbových výrazov: Viazania TIBET umožňujú zložitejšie výrazy, ktoré by mohli potenciálne zaviesť ďalšie režijné náklady v dôsledku analýzy a hodnotenia týchto výrazov. Táto zložitosť však tiež poskytuje výkonnejšie schopnosti viazania údajov.
V súhrne je, že zatiaľ čo neexistujú žiadne explicitné výkonnostné referenčné hodnoty porovnávajúce plynulé a švajčiarske väzby v MVVMCross, plynulé väzby môžu ponúknuť mierne výhody v dôsledku ich typovej povahy a potenciálne zníženie reflexie runtime. Deklaratívna povaha väzieb švajčiarskych/Tibetov však môže zlepšiť čitateľnosť a udržiavateľnosť kódu, čo by mohlo nepriamo ovplyvniť efektívnosť vývoja a celkovú výkonnosť aplikácií znížením chýb a zlepšením kvality kódu. V konečnom dôsledku by sa voľba medzi týmito väzbovými metódami mala zakladať na špecifických potrebách projektu, ako je zložitosť používateľského rozhrania, zacielená platforma a preferencia pre kódované verzus deklaratívne väzby.
Citácie:[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/funmamentals/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-isesues-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/funmamentals/data-binding
Https://learn.microsoft.com/en-us/archive/msdn-magazine/2014/august/windows-phone-build-mvvvm-apps-with-xamarin-mith-xamarin-and-mcross
[9] https://www.mvvmcross.com/documentation/funmamentals/value-converters
[10] https://stackoverflow.com/questions/48422489/mvvmcross-tibet-binding-to-viewmodel-itfesefese