Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Vai ir kādas veiktspējas atšķirības starp tekošām saistībām un Šveices/Tibetas saistījumiem MVVMCross


Vai ir kādas veiktspējas atšķirības starp tekošām saistībām un Šveices/Tibetas saistījumiem MVVMCross


MVVMCROSS datiem tiek izmantoti gan tekoši saistījumi, gan šveices/tibetas saistījumi, taču tie atšķiras pēc savas pieejā un izmantošanas. Lai gan nav skaidras informācijas par veiktspējas atšķirībām starp šiem diviem saistīšanas veidiem, mēs varam analizēt to īpašības, lai izprastu iespējamās sekas:

Fluent Bindings

Fluentie iesiešana ir C#balstīta sintakse, kas ļauj izstrādātājiem izveidot iesiešanas kodā. Šī pieeja ir īpaši noderīga tādās platformās kā iOS un OSX, kur XML izkārtojuma faili nav viegli rediģējami. Fluent Bindings nodrošina drošu veidu, kā saistīt rekvizītus, kas var palīdzēt samazināt izpildlaika kļūdas, satverot neatbilstības sastādīšanas laikā. Tomēr, tā kā tie ir definēti kodeksā, kodu uzturēšanas ziņā tie var prasīt vairāk pieskaitāmās izmaksas, salīdzinot ar deklaratīviem iesiešanas gadījumiem, piemēram, Swiss/Tibet.

Šveices/Tibetas stiprinājumi

Šveices un Tibetas saistījumi ir deklaratīvi, kas nozīmē, ka tie ir definēti XML vai virkņu formātos. Šie iesiešanas gadījumi ir kodolīgāki, un tos var viegli iestrādāt izkārtojuma failos. Īpaši Tibetas saistīšanas sintakse piedāvā bagātīgāku izteiksmes valodu ar tādām funkcijām kā funkcijām līdzīga vērtību pārveidotāja izsaukšana, daudzpakāpju un vienkāršu operatora sintakse. Šī deklaratīvā pieeja var būt efektīvāka koda lasāmības un uzturēšanas ziņā, jo izlaišanas failos ir skaidri redzams.

Veiktspējas apsvērumi

Lai gan nav specifisku datu par veiktspējas atšķirībām starp Fluent un Swiss/Tibet saistījumiem, šādi faktori varētu ietekmēt veiktspēju:

-Apkopošanas laiks pret izpildlaika izšķirtspēju: Parasti iesaiņojumi, kas izšķirti apkopošanas laikā (piemēram, daži tekošu iesiešanas aspekti to tipa droša rakstura dēļ), varētu piedāvāt labāku veiktspēju salīdzinājumā ar izpildlaika izšķirtspēju. Tomēr MVVMCROSS iesieti parasti tiek atrisināti izpildlaikā.

- Pārsteidzības virs galvas: gan tekoši, gan šveices/tibetas iesiešanas gadījumi, iespējams, izmanto refleksiju, lai atrisinātu īpašumu nosaukumus. Tomēr plūstošām saistībām varētu būt neliela priekšrocība, ņemot vērā to tipu drošu raksturu, potenciāli samazinot vajadzību pēc plašām pārdomām izpildlaikā.

- Iesaistošo izteicienu sarežģītība: Tibet saistījumi ļauj veikt sarežģītākus izteicienus, kas varētu potenciāli ieviest papildu pieskaitāmās izmaksas šo izteicienu parsēšanas un novērtēšanas dēļ. Tomēr šī sarežģītība nodrošina arī jaudīgākas datu saistīšanas iespējas.

Rezumējot, lai gan nav skaidru veiktspējas etalonu, kas salīdzinātu Fluent un Swiss/Tibet saistījumus MVVMCross, tekoši iesiešanas gadījumi varētu piedāvāt nelielas priekšrocības, pateicoties to tipam droši raksturu un iespējamo refleksijas samazināšanos. Tomēr Šveices/Tibetas iesiešanas deklaratīvais raksturs var uzlabot koda lasāmību un uzturējamību, kas varētu netieši ietekmēt attīstības efektivitāti un vispārējo lietojumprogrammu veiktspēju, samazinot kļūdas un uzlabojot koda kvalitāti. Galu galā izvēlei starp šīm saistīšanas metodēm jābalstās uz projekta īpašajām vajadzībām, piemēram, uz lietotāja saskarnes sarežģītību, mērķtiecīgu platformu un izvēli uz kodu balstītām un deklaratīvām saistībām.

Atsauces:
[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-tonging-target.html
[5] https://stackoverflow.com/questions/46522577/mvvmcross-issues-with-fluent liešana
[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
[8] https://learn.microsoft.com/en-us/archive/msdn-magazine/2014/august/windows-phone-build-mvm-apps-with-xamarin-and-mvmcross
[9] https://www.mvvmcross.com/documentation/fundamentals/value-converters
[10] https://stackoverflow.com/questions/48422489/mvvmcross-tibet-binding-to-viewmodel-itelf