MVVMCross에서, 유창한 바인딩 및 스위스/티베트 바인딩은 데이터 바인딩에 사용되지만 접근 방식과 사용이 다릅니다. 이 두 가지 유형의 바인딩간에 성능 차이에 대한 명시적인 정보는 없지만, 우리는 그들의 특성을 분석하여 잠재적 영향을 이해할 수 있습니다.
유창한 바인딩
유창한 바인딩은 개발자가 코드에서 바인딩을 생성 할 수있는 C#기반 구문입니다. 이 접근법은 XML 레이아웃 파일이 쉽게 인간을 취득 할 수없는 iOS 및 OSX와 같은 플랫폼에서 특히 유용합니다. 유창한 바인딩은 속성을 바인딩하는 유형 안전 방법을 제공하여 컴파일 시간에 유형 불일치를 포착하여 런타임 오류를 줄일 수 있습니다. 그러나 코드로 정의되므로 스위스/티베트와 같은 선언적 바인딩에 비해 코드 유지 보수 측면에서 더 많은 오버 헤드가 필요할 수 있습니다.스위스/티베트 바인딩
스위스와 티베트 바인딩은 선언적이며 XML 또는 문자열 형식으로 정의됩니다. 이러한 바인딩은 더 간결하며 레이아웃 파일에 쉽게 내장 할 수 있습니다. 특히 Tibet Binding Syntax는 기능과 같은 값 변환기 호출, 멀티 바인딩 및 간단한 연산자 구문과 같은 기능을 갖춘 더 풍부한 표현식 언어를 제공합니다. 이 선언적 접근 방식은 레이아웃 파일에서 바인딩이 명확하게 볼 수 있으므로 코드 가독성 및 유지 관리 측면에서 더 효율적일 수 있습니다.성능 고려 사항
유창함과 스위스/티베트 바인딩 사이의 성능 차이에 대한 구체적인 데이터는 없지만 다음 요소는 성능에 영향을 줄 수 있습니다.-컴파일 타임 vs. 런타임 해상도 : 일반적으로 컴파일 타임에 해결되는 바인딩 (타입 안전 특성으로 인한 유창한 바인딩의 일부 측면과 같이)은 런타임 해상도에 비해 더 나은 성능을 제공 할 수 있습니다. 그러나 MVVMCross 바인딩은 일반적으로 런타임에 해결됩니다.
- 반사의 오버 헤드 : 유창함과 스위스/티베트 바인딩은 반사를 사용하여 속성 이름을 해결할 수 있습니다. 그러나 유창한 바인딩은 타입 안전 특성으로 인해 약간의 이점을 가질 수 있으며, 런타임에 광범위한 반사의 필요성을 줄일 수 있습니다.
- 결합 표현의 복잡성 : 티베트 결합은보다 복잡한 표현을 허용하며,이 표현의 구문 분석 및 평가로 인해 추가 오버 헤드를 도입 할 수 있습니다. 그러나 이러한 복잡성은보다 강력한 데이터 바인딩 기능을 제공합니다.
요약하면, MVVMCross에서 유창함과 스위스/티베트 바인딩을 비교하는 명백한 성능 벤치 마크는 없지만 유창한 바인딩은 타입 안전 특성과 런타임 반사의 잠재적 감소로 인해 약간의 이점을 제공 할 수 있습니다. 그러나 스위스/티베트 바인딩의 선언적 특성은 코드 가독성 및 유지 관리 가능성을 향상시킬 수 있으며, 이는 오류를 줄이고 코드 품질을 향상시켜 개발 효율과 전반적인 응용 프로그램 성능에 간접적으로 영향을 줄 수 있습니다. 궁극적으로, 이러한 바인딩 방법들 사이의 선택은 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-issues-with-fluent-binding
[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-binding
[8] https://learn.microsoft.com/en-us/archive/msdn-magazine/2014/august/windows-phone-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-itself