在MVVMCross中,流利的结合和瑞士/西藏结合物都用于数据结合,但它们的方法和使用情况有所不同。尽管没有有关这两种类型的绑定之间的性能差异的明确信息,但我们可以分析其特征以了解潜在的影响:
##流利的绑定
流利的绑定是基于C#的语法,它允许开发人员在代码中创建绑定。这种方法在iOS和OSX之类的平台上特别有用,在iOS和OSX中,XML布局文件不容易人为编辑。流利的绑定提供了一种绑定属性的类型安全方法,可以通过在编译时捕获类型不匹配来减少运行时错误。但是,由于它们是在代码中定义的,因此与瑞士/西藏这样的声明性绑定相比,它们可能需要更多的代码维护开销。
##瑞士/西藏装订
瑞士和西藏绑定是声明性的,这意味着它们以XML或字符串格式定义。这些绑定更简洁,可以轻松地嵌入布局文件中。特别是,西藏绑定语法提供了一种更丰富的表达语言,具有诸如函数式值转换器调用,多绑定和简单操作器语法之类的功能。这种声明的方法在代码可读性和可维护性方面可以更有效,因为在布局文件中清晰可见绑定。
##性能考虑
虽然没有关于流利和瑞士/西藏绑定之间性能差异的特定数据,但以下因素可能会影响绩效:
- 编译时间与运行时分辨率:通常,与运行时分辨率相比,在编译时解决的绑定(例如由于其类型安全性而引起的某些方面的绑定)可能会提供更好的性能。但是,MVVMCROSS绑定通常在运行时解决。
- 反射的开销:流利和瑞士/西藏绑定都可能使用反射来解决属性名称。但是,流利的绑定可能会由于其类型安全性而具有略有优势,从而有可能减少在运行时进行广泛反射的需求。
- 结合表达式的复杂性:西藏结合物允许更复杂的表达式,由于这些表达式的解析和评估,这可能会引入更多的开销。但是,这种复杂性还提供了更强大的数据绑定功能。
总而言之,虽然没有明确的性能基准,即比较MVVMCross中流利和瑞士/西藏结合物,但Fluent Bindings可能会由于其类型安全性和在运行时反射中的潜在减少而具有略有优势。但是,瑞士/西藏绑定的声明性质可以改善代码的可读性和可维护性,这可能会间接影响开发效率和整体应用效果,通过降低错误和提高代码质量。最终,这些绑定方法之间的选择应基于项目的特定需求,例如UI的复杂性,被靶向的平台以及对基于代码的声明性绑定的偏好。
引用:[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-sissues-with-fluent-lunent-binding
[6] https://www.reddit.com/r/businessintelligence/comments/comments/ky0dq9/is_it_a_a_best_best_practice_to_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-phote-phote-build-mvvm-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-infly