Bei MVVMCross werden sowohl fließende Bindungen als auch Schweizer/Tibet -Bindungen zur Datenbindung verwendet, sie unterscheiden sich jedoch in ihrem Ansatz und ihrer Verwendung. Obwohl es keine expliziten Informationen zu Leistungsunterschieden zwischen diesen beiden Arten von Bindungen gibt, können wir ihre Merkmale analysieren, um mögliche Auswirkungen zu verstehen:
fließende Bindungen
Fluent-Bindungen sind eine C#-basierte Syntax, mit der Entwickler Bindungen im Code erstellen können. Dieser Ansatz ist besonders nützlich auf Plattformen wie iOS und OSX, bei denen XML-Layout-Dateien nicht leicht menschlich-edierbar sind. Fluent-Bindungen bieten eine Art vom Typ Safe zur Bindung von Eigenschaften, die dazu beitragen können, dass die Laufzeitfehler durch Fangstörungen zu Kompilierungszeiten zu Fehlanpassungen fangen. Da sie jedoch im Code definiert sind, benötigen sie möglicherweise mehr Gemeinkosten in Bezug auf die Code -Wartung im Vergleich zu deklarativen Bindungen wie Schweizer/Tibet.Schweizer/Tibet -Bindungen
Schweizer und Tibet -Bindungen sind deklarativ, was bedeutet, dass sie in XML- oder String -Formaten definiert sind. Diese Bindungen sind prägnanter und können leicht in Layout -Dateien eingebettet werden. Insbesondere die Tibet-Bindungs-Syntax bietet eine reichhaltigere Expressionssprache mit Funktionen wie funktionsähnlicher Wertkonverteraufruf, Multi-Bindungen und einfacher Bedienersyntax. Dieser deklarative Ansatz kann hinsichtlich der Code -Lesbarkeit und -wartbarkeit effizienter sein, da die Bindungen in den Layout -Dateien deutlich sichtbar sind.Leistungsüberlegungen
Während es keine spezifischen Daten zu Leistungsunterschieden zwischen Fluent- und Schweizer/Tibet -Bindungen gibt, können die folgenden Faktoren die Leistung beeinflussen:-Kompilierungszeit und Laufzeitauflösung: Im Allgemeinen können Bindungen, die bei Kompilierungszeit aufgelöst werden (wie einige Aspekte von fließenden Bindungen aufgrund ihrer Art der Natur), im Vergleich zur Laufzeitauflösung eine bessere Leistung bieten. MVVMcross -Bindungen werden jedoch in der Laufzeit typischerweise aufgelöst.
- Überkopf der Reflexion: Sowohl fließende als auch Schweizer/Tibet -Bindungen verwenden wahrscheinlich Reflexion, um Eigenschaftsnamen aufzulösen. Fluent-Bindungen können jedoch aufgrund ihrer Art von Typ-Sicherheit einen leichten Vorteil haben, was möglicherweise die Notwendigkeit einer umfangreichen Reflexion zur Laufzeit verringert.
- Komplexität von Bindungsausdrücken: Tibet -Bindungen ermöglichen komplexere Ausdrücke, die möglicherweise zusätzlichen Aufwand aufgrund der Analyse und Bewertung dieser Ausdrücke einführen könnten. Diese Komplexität bietet jedoch auch leistungsstärkere Datenbindungsfunktionen.
Zusammenfassend gibt es zwar keine expliziten Leistungsbenchmarks, die fließende und schweizerische/tibet-Bindungen in MVVMCross vergleichen, aber aufgrund ihrer Art und potenziellen Verringerung der Laufzeitreflexion können fließende Bindungen geringfügige Vorteile bieten. Die deklarative Natur von Schweizer/Tibet -Bindungen kann jedoch die Lesbarkeit und die Wartbarkeit der Code verbessern, was indirekt die Entwicklungseffizienz und die allgemeine Anwendungsleistung durch Reduzierung von Fehlern und Verbesserung der Codequalität beeinflussen kann. Letztendlich sollte die Wahl zwischen diesen Bindungsmethoden auf den spezifischen Anforderungen des Projekts beruhen, wie z.
Zitate:[1] http://slodge.blogspot.com/2013/06/tibet-binding.html
[2] https://github.com/mvvmcross/mvmcross/issues/1342
[3] https://learn.microsoft.com/en-us/dotnet/maui/fundamentals/data-binding/compiled-indings?view=net-maui-9.0
[4] https://blog.ostebaronen.dk/2018/01/mvvmcross-binding-target.html
[5] https://stackoverflow.com/questions/46522577/mvmcross- isues-with-fluent-binding
[6] https://www.reddit.com/r/businessIntelligence/comments/ky0dq9/is_it_a_best_practice_to_connect_with_views/
[7] https://www.mvmcross.com/documentation/fundamentals/data-binding
[8] https://learn.microsoft.com/en-us/archive/msdn-magazine/2014/august/windows-phone-build-mvm-apps-apps-apps-xamarin-and-mvmcross
[9] https://www.mvmcross.com/documentation/fundamentals/value-converters
[10] https://stackoverflow.com/questions/48422489/mvmcross-tibet-binding-to-viewmodel-itelf