I MVVMCROSS bruges både flydende bindinger og schweiziske/Tibet -bindinger til databinding, men de adskiller sig i deres tilgang og anvendelse. Selvom der ikke er eksplicit information om præstationsforskelle mellem disse to typer bindinger, kan vi analysere deres egenskaber for at forstå potentielle konsekvenser:
Fluentbindinger
Fluentbindinger er en C#-baseret syntaks, der giver udviklere mulighed for at oprette bindinger i kode. Denne tilgang er især nyttig på platforme som iOS og OSX, hvor XML-layoutfiler ikke let er menneskelige redigerbare. Fluentbindinger giver en typesikker måde at binde egenskaber på, hvilket kan hjælpe med at reducere runtime-fejl ved at fange type misforhold på kompileringstidspunktet. Da de er defineret i kode, kræver de muligvis mere overhead med hensyn til kodevedligeholdelse sammenlignet med deklarative bindinger som Swiss/Tibet.Swiss/Tibet -bindinger
Swiss og Tibet -bindinger er erklærende, hvilket betyder, at de er defineret i XML- eller strengformater. Disse bindinger er mere kortfattede og kan let indlejres i layoutfiler. Især Tibet-bindende syntaks tilbyder et rigere ekspressionssprog med funktioner som funktionslignende værdikonverteropkald, multi-bindinger og enkel operatørsyntaks. Denne deklarative tilgang kan være mere effektiv med hensyn til kodelæsbarhed og vedligeholdelighed, da bindinger er tydeligt synlige i layoutfilerne.Performance -overvejelser
Selvom der ikke er specifikke data om præstationsforskelle mellem flydende og schweiziske/Tibet -bindinger, kan følgende faktorer påvirke ydeevnen:-Compile-time vs. runtime-opløsning: Generelt kan bindinger, der løses på kompileringstid (som nogle aspekter af flydende bindinger på grund af deres typesikre natur) muligvis bedre ydelse sammenlignet med runtime-opløsning. Imidlertid løses MVVMCROSS -bindinger typisk ved kørsel.
- Overhead af refleksion: Både flydende og schweiziske/Tibet -bindinger bruger sandsynligvis refleksion til at løse ejendomsnavne. Imidlertid kan flydende bindinger have en lille fordel på grund af deres typesikre natur, hvilket potentielt reducerer behovet for omfattende refleksion ved kørsel.
- Kompleksitet af bindende udtryk: Tibet -bindinger giver mulighed for mere komplekse udtryk, som potentielt kan indføre yderligere omkostninger på grund af parsing og evaluering af disse udtryk. Imidlertid giver denne kompleksitet også mere kraftfulde databindingsfunktioner.
Sammenfattende, selvom der ikke er nogen eksplicit ydelse, benchmarks, der sammenligner flydende og schweiziske/Tibet-bindinger i MVVMCROSS, kan flydende bindinger muligvis give små fordele på grund af deres typesikre natur og potentiel reduktion i runtime-refleksion. Imidlertid kan den erklærende karakter af schweiziske/tibetbindinger forbedre kodelæsbarheden og vedligeholdeligheden, hvilket indirekte kan påvirke udviklingseffektiviteten og den samlede applikationsydelse ved at reducere fejl og forbedre kodekvaliteten. I sidste ende bør valget mellem disse bindingsmetoder være baseret på projektets specifikke behov, såsom UI's kompleksitet, platformen er målrettet og præferencen for kodebaseret kontra deklarative bindinger.
Citater:[1] http://slodge.blogspot.com/2013/06/tibet-bindende.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-marget.html
[5] https://stackoverflow.com/questions/46522577/mvvmcross-easesues-with-fluent-bindende
)
[7] https://www.mvvmcross.com/documentation/fundamentals/data-binding
[8] https://learn.microsoft.com/en-us/archive/msdn-magazine/2014/august/windows-thone-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-tens selv