Palyginus sklandų surišimų efektyvumą su Šveicarijos/Tibeto surišimo išraiškomis MVVMCross, atsiranda keli veiksniai. Čia yra išsamus suskirstymas:
Įrišimo tipų apžvalga
- laisvai įrišimai: tai yra saugios tipo jungimosi išraiškos, sukurtos C# kode. Jie yra ypač naudingi tokiose platformose kaip „iOS“ ir „UWP“, kur XML išdėstymo failai nėra lengvai redaguojami. Laisvai įrišimai suteikia aiškų, stipriai įvestą būdą surišti vaizdo savybes, kad būtų galima peržiūrėti modelio savybes, o tai gali padėti sumažinti vykdymo laiko klaidas, sugaudant tipo neatitikimus sudarant kaupimo laiką [1] [4].
- Šveicarijos/Tibeto įrišimo išraiškos: Tai yra stygos pagrįstos surišimo išraiškos, paprastai naudojamos XML išdėstymo failuose (pvz., „Android's AXML“). Šveicarijos rišimai yra lankstesni ir leidžia atlikti sudėtingas išraiškas, tokias kaip suderinimas ir sąlyginė logika. Tibeto surišimas išplečia tai palaikant sudėtingesnę sintaksę, panašią į surišimo išraiškų mini kalbą [1] [6].
našumo palyginimas
„Compile-Time“ ir „Runtime“ įvertinimas
- Laisvūs įrišimai: kadangi laisvai įrišimai yra apibrėžti C#, jie vertinami kompiliavimo metu. Tai reiškia, kad bet kokios rūšies klaidos ar įrišimo problemos sugaunamos anksti, o tai gali pagerinti vystymosi efektyvumą. Tačiau tikrasis našumas vykdymo metu paprastai yra panašus į kitus įrišimo metodus, nes rišimo sąranka vis dar vykdoma vykdymo metu.
- Šveicarijos/Tibeto įrišimai: Šie įrišimai vertinami vykdymo metu, nes jos yra apibrėžiamos kaip eilutės XML failuose. Tai reiškia, kad visos surišimo išraiškų klaidos aptinkamos tik tada, kai programa veikia, o tai gali sukelti lėtesnius vystymosi ciklus, jei nebus tinkamai išbandytos. Tačiau vykdymo laiko įvertinimas iš prigimties nepadaro jų lėčiau nei laisvai įrišimai, kai įrišimai bus nustatyti.
Vykdymo laikas
- Skaidrios įrišimai: Laisvų įrišimų pridėtinė vertė yra minimali, nes jie tiesiogiai sukuria būtinus surišimo objektus kode. Šis tiesioginis požiūris gali būti šiek tiek efektyvesnis nei analizuoti stygų išraiškas vykdymo metu.
- Šveicarijos/Tibeto įrišimai: Reikia analizuoti jungimosi išraiškas iš XML vykdymo metu, o tai įveda šiek tiek pridėtinių, palyginti su laisvai surišimais. Tačiau ši pridėtinė vertė paprastai būna maža, nebent susiduria su labai sudėtingais ar daugybe įrišimų.
plėtros efektyvumas ir klaidų tvarkymas
- Laisvai įrišimai: užtikrinkite geresnį vystymosi efektyvumą dėl kompiliavimo laiko patikrinimų, kurie gali netiesiogiai pagerinti našumą, sumažinant laiką, praleistą derinimo metu.
- Šveicarijos/Tibeto segtukai: Nors jie yra lankstesni sudėtingoms išraiškoms, jie reikalauja daugiau vykdymo laiko patikrinimų ir gali sukelti lėtesnį vystymąsi, jei jis nebus tinkamai išbandytas.
Išvada
Kalbant apie neapdorotą našumą, tiek laisvai, tiek šveicarijos/Tibeto įrišimai paprastai yra palyginami. Tačiau laisvai įrišimai suteikia vystymosi efektyvumo ir kompiliavimo laiko klaidų aptikimo pranašumų, kurie gali netiesiogiai pagerinti bendrą taikymo rezultatą, sumažinant derinimo laiką. Šveicarijos/Tibeto įrišimai suteikia daugiau lankstumo sudėtinguose scenarijuose, tačiau reikia daugiau patikrinimų. Pasirinkimas tarp jų dažnai priklauso nuo specifinių projekto poreikių ir kūrėjo pirmenybės kodams pagrįstų, palyginti su XML pagrįstais įrišimo apibrėžimais.
Citatos:[1] https://blog.ostebaronen.dk/2018/01/mvvmcross-inding-arget.html
[2] https://stackoverflow.com/questions/46522577/mvvmcross-issues-with-fluent-binding
[3] https://stackoverflow.com/questions/48422489/mvvmcross-tibet-inding-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-mvvmcross-fluent-binding-on-uwp
[11] https://crosscuttingconcerns.com/mvvmcross-fluent-databinding