Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Fluent BindingsとSwiss/Tibet BindingsにMVVMCrossのパフォーマンスの違いはありますか


Fluent BindingsとSwiss/Tibet BindingsにMVVMCrossのパフォーマンスの違いはありますか


MVVMCrossでは、流fluentバインディングとスイス/チベットの両方のバインディングがデータバインディングに使用されますが、アプローチと使用法が異なります。これら2つのタイプのバインディングの間にパフォーマンスの違いに関する明示的な情報はありませんが、潜在的な意味を理解するためにそれらの特性を分析できます。

Fluent Bindings

Fluent Bindingsは、開発者がコードにバインディングを作成できるようにするC#ベースの構文です。このアプローチは、XMLレイアウトファイルが簡単に編集できないiOSやOSXなどのプラットフォームで特に役立ちます。 Fluent Bindingは、プロパティをバインドするタイプセーフの方法を提供します。これは、コンパイル時にタイプの不一致をキャッチすることでランタイムエラーを減らすのに役立ちます。ただし、コードで定義されているため、スイス/チベットのような宣言的バインディングと比較して、コードメンテナンスに関してより多くのオーバーヘッドが必要になる場合があります。

##スイス/チベットのバインディング
スイスとチベットのバインディングは宣言的です。つまり、XMLまたは文字列形式で定義されています。これらのバインディングはより簡潔で、レイアウトファイルに簡単に埋め込むことができます。特に、チベットの結合構文は、関数のような値コンバーター呼び出し、マルチバインディング、シンプルな演算子構文などの機能を備えたより豊富な表現言語を提供します。この宣言的なアプローチは、レイアウトファイルにバインディングがはっきりと表示されるため、コードの読みやすさと保守性の点でより効率的になります。

##パフォーマンスに関する考慮事項
FluentとSwiss/Tibet Bindingsのパフォーマンスの違いに関する特定のデータはありませんが、次の要因はパフォーマンスに影響を与える可能性があります。

- コンパイル時間とランタイム解像度:一般に、コンパイル時に解決されるバインディング(タイプセーフの性質による流fluentバインディングのいくつかの側面のように)は、ランタイム解像度と比較してより良いパフォーマンスを提供する可能性があります。ただし、MVVMCrossバインディングは通常、実行時に解決されます。

- 反射のオーバーヘッド:流fluentとスイス/チベットの両方のバインディングは、反射を使用してプロパティ名を解決する可能性があります。ただし、流fluentなバインディングは、タイプセーフの性質のためにわずかな利点がある可能性があり、実行時に広範な反射の必要性を減らす可能性があります。

- 結合式の複雑さ:チベットのバインディングにより、より複雑な表現が可能になり、これらの表現の解析と評価のために追加のオーバーヘッドを導入する可能性があります。ただし、この複雑さは、より強力なデータバインディング機能も提供します。

要約すると、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-issues-fith-fluentバインディング
[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-bhuild-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