În MVVMcross, atât legăturile fluente, cât și legăturile elvețiene/Tibet sunt utilizate pentru legarea datelor, dar acestea diferă în abordarea și utilizarea lor. Deși nu există informații explicite cu privire la diferențele de performanță între aceste două tipuri de legături, putem analiza caracteristicile acestora pentru a înțelege potențialele implicații:
legături fluente
Legăturile fluente sunt o sintaxă bazată pe C#care permite dezvoltatorilor să creeze legături în cod. Această abordare este deosebit de utilă pe platforme precum iOS și OSX, unde fișierele de layout XML nu sunt ușor editabile pentru om. Legăturile fluente oferă o modalitate sigură de tip de a lega proprietățile, ceea ce poate ajuta la reducerea erorilor de rulare prin prinderea nepotrivirii tipului la timp de compilare. Cu toate acestea, întrucât sunt definite în cod, ar putea necesita mai mult cheltuieli generale în ceea ce privește întreținerea codului, comparativ cu legăturile declarative precum Swiss/Tibet.Legături elvețiene/Tibet
Legăturile elvețiene și Tibet sunt declarative, ceea ce înseamnă că sunt definite în formate XML sau String. Aceste legături sunt mai concise și pot fi ușor încorporate în fișierele de aspect. Sintaxa de legare a Tibetului, în special, oferă un limbaj de expresie mai bogat, cu caracteristici precum apelul de conversare a valorii funcționale, multi-legare și sintaxă simplă a operatorului. Această abordare declarativă poate fi mai eficientă în ceea ce privește lizibilitatea și întreținerea codului, deoarece legăturile sunt clar vizibile în fișierele de aspect.Considerații privind performanța
Deși nu există date specifice despre diferențele de performanță între legăturile fluente și elvețiene/Tibet, următorii factori ar putea influența performanța:-Rezoluția timpului de compilare vs. runtime: În general, legăturile care sunt rezolvate în timp de compilare (cum ar fi unele aspecte ale legăturilor fluente datorită naturii lor sigure de tip) ar putea oferi performanțe mai bune în comparație cu rezoluția de rulare. Cu toate acestea, legăturile MVVMcross sunt de obicei rezolvate la timpul de rulare.
- Cercete de reflecție: Atât legăturile fluente, cât și cele elvețiene/Tibet folosesc probabil reflecție pentru a rezolva numele de proprietăți. Cu toate acestea, legăturile fluente ar putea avea un ușor avantaj datorită naturii lor sigure de tip, reducând potențial necesitatea unei reflecții extinse la timpul de rulare.
- Complexitatea expresiilor de legare: legăturile din Tibet permit expresii mai complexe, care ar putea introduce cheltuieli generale suplimentare datorită analizării și evaluării acestor expresii. Cu toate acestea, această complexitate oferă, de asemenea, capacități mai puternice de legare a datelor.
În rezumat, deși nu există repere de performanță explicite care compară legăturile fluente și elvețiene/Tibet în MVVMcross, legăturile fluente ar putea oferi avantaje ușoare datorită naturii lor sigure de tip și reducerii potențiale a reflecției în timp de rulare. Cu toate acestea, natura declarativă a legăturilor elvețiene/Tibet poate îmbunătăți lizibilitatea și întreținerea codului, ceea ce ar putea afecta indirect eficiența dezvoltării și performanța generală a aplicației prin reducerea erorilor și îmbunătățirea calității codului. În cele din urmă, alegerea dintre aceste metode de legare ar trebui să se bazeze pe nevoile specifice ale proiectului, cum ar fi complexitatea UI, platforma fiind vizată și preferința pentru legăturile declarative bazate pe cod sau declarativ.
Citări:[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-tself