Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon MVVMCrossのコアプロジェクトとUIプロジェクトの相互作用を説明できますか


MVVMCrossのコアプロジェクトとUIプロジェクトの相互作用を説明できますか


MVVMCrossは、Model-View-ViewModel(MVVM)パターンを使用してアプリケーションの開発を容易にするクロスプラットフォームフレームワークです。これにより、開発者は、アプリケーションロジックを2つの主要な部分、コアプロジェクトとUIプロジェクトに分離することにより、ゆるく結合し、保守可能なモバイルソリューションを作成できます。

##コアプロジェクト
コアプロジェクトは通常、以下を含むすべての共有コードを含む.NET標準ライブラリです。
-ViewModels:これらは、ユーザーのインタラクションとビジネスロジックの処理を担当します。
- モデル:アプリケーション全体で使用されるデータ構造を表します。
- サービス:データ、Webサービス、またはその他の外部リソースへのアクセスを提供します。
- コンバーター:データ型変換に使用。
- アプリクラス:これは、アプリケーションのビジネスロジックと表示モデルの初期化を担当します。また、制御(IOC)コンテナの反転でカスタムオブジェクトの登録を処理します。
-AppStart:オプションで、アプリケーションが開始されたときに最初に表示するビューモデルを決定するために使用されます。

UIプロジェクト

UIプロジェクトはプラットフォーム固有であり、ユーザーインターフェイス要素とプラットフォーム固有のコードが含まれています。各ターゲットプラットフォーム(iOS、Androidなど)には、個別のUIプロジェクトがあります。これらのプロジェクトには以下が含まれます。
- ビュー:各ビューは、対応するビューモデルを提示する責任があります。ビューは、ネイティブプラットフォームツール(例:Xamarin.FormsのXAML、ANDROID用AXML)を使用して設計されています。
- ネイティブアプリケーションハンドラー:これにより、ネイティブライフサイクルイベントが処理されます。たとえば、Androidでは、「MainActivity」または「MainApplication」クラスになりますが、iOSでは「AppDelegate」クラスになります。
- セットアップクラス:これは、MVVMCrossのブートストラップとプラットフォーム固有のサービスの登録を担当します。 MVVMCrossフレームワークを初期化し、プラットフォーム固有の実装でIOCコンテナをセットアップします。

##コアプロジェクトとUIプロジェクト間の相互作用
MVVMCrossのコアプロジェクトとUIプロジェクトの間の相互作用は、MVVMパターンとフレームワークのIOCコンテナによって促進されます。これらがどのように相互作用するかは次のとおりです。
-ViewModelバインディング:UIプロジェクトはMVVMCrossを使用してビューをバインドしてモデルを表示します。これは通常、命名規則を使用して、または「[mvxviewfor(typeof(homeviewmodel))]]のような属性でビューを飾ることによって行われます。
- サービスインジェクション:コアプロジェクトは、各プラットフォームで異なる方法で実装されているサービスのインターフェイスを定義します。これらのサービスはIOCコンテナに登録され、ビューモデルに注入され、コードを複製することなくプラットフォーム固有の機能を可能にします。
- ナビゲーションとプレゼンテーション:MVVMCrossは、ビューモデル間のナビゲートと表示ビューを表示するメカニズムを提供します。このフレームワークは、プレゼンター(「imvxiosviewpresenter」、「imvxandroidviewpresenter」を使用して、各プラットフォームでビューの表示方法を管理します。

アプリケーションロジックをCoreプロジェクトとUIプロジェクトに分離することにより、MVVMCrossを使用すると、開発者はプラットフォーム間でコードの再利用を最大化しながら、プラットフォーム固有のカスタマイズと最適化を可能にします[1] [3] [5]。

引用:
[1] https://www.mvvmcross.com/documentation/getting-started/mvvmcross-Overview
[2] https://canbilgin.wordpress.com/tag/mvvmcross/
[3] https://leaware.com/creating-cross-platform-xamarin-applications-using-the-mvvmcross-framework/
[4] https://www.mvvmcross.com/documentation/advanced/customizing-using-app-and-setup
[5] https://www.suneco.nl/blogs/boost-your-xamarin-native-projects-with-mvvmcross/
[6] https://learn.microsoft.com/en-us/archive/msdn-magazine/2014/august/windows-buld-build-mvvm-apps-with-xamarin-and-mvvmcross
[7] https://www.mvvmcross.com/documentation/tutorials/tipcalc/the-core-project
[8] https://canbilgin.wordpress.com/2017/03/26/xamarin-forms-application-with-mvvmcross/