MVVMCrossの使用をXamarin.FormsおよびXamarinネイティブと比較すると、主にUIの柔軟性、コード共有、開発アプローチの観点から、いくつかの重要な違いが現れます。
UIの柔軟性と制御
-Xamarin.Forms:このフレームワークは、プラットフォーム間で共有UIレイヤーを提供します。これにより、UIコードを1回記述して複数のプラットフォームに展開できるようにすることで開発が簡素化されます。ただし、この共有UIは、カスタマイズをプラットフォーム固有の機能に制限する可能性があり、より高度なUI要素[7] [9]にカスタムレンダラーが必要です。 MVVMCrossはXamarin.Formsで使用してビジネスロジックとナビゲーションを管理できますが、UIはプラットフォーム全体で標準化されたままです[1] [10]。
-Xamarinネイティブ:MVVMCrossでXamarinネイティブを使用すると、各プラットフォームのUIを完全に制御できます。これにより、プラットフォーム固有のUI実装が可能になり、各プラットフォームのネイティブルックアンドフィールが最大化されます。このアプローチでは、iOSとAndroid用の個別のUIレイヤーを開発するためにより多くの努力が必要ですが、より柔軟性とカスタマイズを提供します[7] [9]。
##コード共有と再利用
-Xamarin.Forms:Xamarin.Formsを使用すると、ビジネスロジック(MVVMCross経由)だけでなく、プラットフォーム全体のUIコードも共有できます。これにより、開発が簡素化され、維持する必要があるコードの量が減少します。ただし、UIは、すべてのプラットフォームで動作する一般的な一連の要素に限定されています[4] [10]。
-Xamarinネイティブ:MVVMCrossを使用したネイティブXamarinセットアップでは、プラットフォーム間でビジネスロジック(ViewModels)を共有できますが、各プラットフォームにUIを個別に実装する必要があります。このアプローチにより、MVVMCrossを使用する場合、プレゼンテーションレイヤーとUIロジックでより多くのコード再利用が可能になりますが、プラットフォーム固有のUI開発が必要です[9]。
##開発アプローチ
-XAMARIN.FORMS:Xamarin.FormsとMVVMCrossを使用して開発することは、クロスプラットフォームのUI開発を簡素化するため、大規模なモバイルエクスペリエンスなしで開発者が好むことがよくあります。このフレームワークは、基礎となる複雑さの多くを処理し、開発者が共有ロジックとUI [4] [10]に集中できるようにします。
- Xamarinネイティブ:MVVMCrossを使用したネイティブXamarin開発は、通常、UIをきめんゆい制御を望み、プラットフォーム固有の開発に満足している開発者に好まれます。このアプローチには、ネイティブIOSとAndroid開発の専門知識が必要ですが、UIの設計と実装においてより大きな柔軟性を提供します[7] [9]。
##ナビゲーションとバインディング
-Xamarin.Forms with MVVMCross:Xamarin.Forms with MVVMCrossのNavigationはViewModelレベルで管理されており、懸念のきれいな分離を可能にします。 MVVMCrossは、フォールバック値などの強化されたバインディング機能を提供しますが、標準のXamarin.Forms Bindings [2] [10]にあるソースプロパティのようないくつかの機能がありません。
-MVVMCrossのXamarinネイティブ:ネイティブXamarinプロジェクトでは、MVVMCrossはナビゲーションとビューモデルペアリングを処理し、プラットフォーム間で一貫したMVVMアーキテクチャを可能にします。このセットアップにより、開発者は共有ビジネスロジックレイヤーを維持しながら、プラットフォーム固有のナビゲーションパターンを活用できます[3] [9]。
要約すると、両方のアプローチはMVVMアーキテクチャ用のMVVMCrossを活用できますが、Xamarin.Formsはプラットフォーム固有のUI機能を制御することが少ない共有UIレイヤーを提供しますが、XamarinネイティブはUIのカスタマイズを完全に制御できますが、個別のUI実装にはより多くの開発努力が必要です。
引用:[1] https://www.mvvmcross.com/documentation/platform/xamarin.forms/xamarin-forms
[2] https://www.xamarinhelp.com/use-xamarin-forms-mvvm-framework/
[3] https://canbilgin.wordpress.com/tag/mvvmcross/
[4] https://www.mvvmcross.com/documentation/getting-started/getting-started
[5] https://www.reddit.com/r/androiddev/comments/6cseds/what_are_the_disadvantages_of_xamarin_for_android/
[6] https://canbilgin.wordpress.com/2017/03/26/xamarin-forms-application-with-mvvmcross/
[7] https://stackoverflow.com/questions/38450264/xamarin-forms-vs-xamarin-mvvmcross
[8] https://mentormate.com/blog/6-reasons-mvvmcross-speeds-xamarin-development-personalizes-ux/
[9] https://www.suneco.nl/blogs/boost-your-xamarin-native-projects-with-mvvmcross/
[10] https://visualstudiomagazine.com/articles/2018/05/08/build-a-xamarin.forms-application.aspx