MVC と MVVM – それらの違い
MVC と MVVM の主な違い
- MVCフレームワークは、アプリケーションをモデル、ビュー、コントローラーの3つの主要な論理コンポーネントに分離するアーキテクチャパターンです。一方、MVVMは、マークアップ言語またはGUIコードを使用してグラフィカルユーザーインターフェイスの開発を分離するのに役立ちます。
- MVC では、コントローラーがアプリケーションへのエントリ ポイントですが、MVVM では、ビューがアプリケーションへのエントリ ポイントです。
- MVC モデル コンポーネントはユーザーとは別にテストできますが、MVVM は個別の単体テストが容易で、コードはイベント駆動型です。
- MVC アーキテクチャは、コントローラーとビューの間に「1 対多」の関係を確立しますが、MVVM アーキテクチャは、ビューと ViewModel の間に「1 対多」の関係を定義します。
MVCとは何ですか?
この MVCフレームワーク アプリケーションを 3 つの主要な論理コンポーネントであるモデル、ビュー、コントローラーに分割するアーキテクチャ パターンです。そのため、略語は MVC です。MVC の完全な形式は、Model View Controller です。
このアーキテクチャでは、アプリケーションの特定の開発面を処理するためにコンポーネントが構築されます。MVC は、ビジネス ロジックとプレゼンテーション層を互いに分離します。このアーキテクチャ パターンは、主にデスクトップのグラフィカル ユーザー インターフェイス (GUI) に使用されます。
MVVMとは何ですか?
MVVM アーキテクチャは、マークアップ言語または GUI コードを使用してグラフィカル ユーザー インターフェイスの開発を分離することを容易にします。MVVM の完全な形式は、Model–View–ViewModel です。
MVVM のビュー モデルは値コンバーターです。つまり、オブジェクトの管理と表示が容易になる方法で、モデルからデータ オブジェクトを公開するのはビュー モデルの役割です。
MVCパターン
XNUMX つの重要な MVC コンポーネントは次のとおりです。
- 型: これには、すべてのデータとそれに関連するロジックが含まれます。
- 表示: ユーザーにデータを提示するか、ユーザーとの対話を処理します。
- コントローラ: Model コンポーネントと View コンポーネント間のインターフェイス。
この各コンポーネントを詳しく見てみましょう。
モデル
モデル コンポーネントには、データと関連ロジックが格納されます。 これは、コントローラー コンポーネント間またはその他の関連ビジネス ロジック間で転送されるデータを表します。
たとえば、Controller オブジェクトは、データベースから顧客情報を取得するのに役立ちます。 データを操作してデータベースに送り返すか、同じデータをレンダリングするために使用します。
表示
ビューは、データのプレゼンテーションを表すアプリケーションの一部です。 ビューは、モデル データから収集されたデータによって作成されます。 ビューは、出力をユーザーに再送信するために、モデルに情報を提供するように要求します。
ビューは、グラフ、図、表のデータも表します。たとえば、顧客ビューには、テキスト ボックス、ドロップダウンなどのすべての UI コンポーネントが含まれます。
コントローラー
コントローラーは、ユーザー操作を処理するアプリケーションの一部です。 コントローラーはユーザーからのマウスとキーボードの入力を解釈し、モデルとビューに適切に変更するよう通知します。
コントローラーはモデルにコマンドを送信して、その状態を更新します (例: 特定のドキュメントの保存)。 また、コントローラーは、ビューのプレゼンテーションを変更するために、関連付けられたビューにコマンドを送信します (たとえば、特定のドキュメントをスクロールする)。
MVVMパターン
以下は MVVM のパターンです。
MVVM アーキテクチャは、ビューとビューモデル間の双方向データ バインディングを提供します。また、ビューモデル内の変更をビューに自動的に反映させるのにも役立ちます。ビューモデルは、オブザーバー パターンを使用してビューモデルに変更を加えます。
このコンポーネントを詳しく見てみましょう。
モデル
モデルにはデータと関連ロジックが保存されます。 これは、コントローラー コンポーネント間またはその他の関連ビジネス ロジック間で転送されるデータを表します。
たとえば、Controller オブジェクトは学校データベースから生徒情報を取得します。 データを操作してデータベースに送り返すか、同じデータをレンダリングするために使用します。
表示
ビューはHTML、CSS、jQueryなどのUIコンポーネントを表します。
パターン ビューは、コントローラーから受信したデータを結果として表示する役割を担います。このビューは、モデルをユーザー インターフェイス (UI) に変換します。
モデルを見る
ビュー モデルは、ビューの状態をサポートするための関数、コマンド、メソッドを提示する役割を担います。また、モデルを操作し、ビュー内のイベントをアクティブ化する役割も担います。
MVCとMVVMの違い Archi構造
MVVM と MVC の重要な違いは次のとおりです。
MVC (モデルビューコントローラー) | MVVM(モデルビューViewModel) |
---|---|
コントローラーはアプリケーションへのエントリーポイントです。 | ビューはアプリケーションへのエントリ ポイントです。 |
コントローラーとビューの間の XNUMX 対多の関係。 | ビューとビューモデルの間の XNUMX 対多の関係。 |
ビューにはコントローラーへの参照がありません | ビューには、ビューモデルへの参照があります。 |
MVCは古いモデルです | MVVM は比較的新しいモデルです。 |
このモデルの読み取り、変更、単体テスト、再利用が難しい | データ バインディングが複雑な場合、デバッグ プロセスは複雑になります。 |
MVC モデル コンポーネントはユーザーとは別にテスト可能 | 個別の単体テストが容易で、コードはイベント駆動型です。 |
MVCの特徴
MVC の重要な機能を次に示します。
- 簡単で摩擦のない試験性。 高度にテスト可能、拡張可能、プラグイン可能なフレームワーク
- また、ASP.NET、Django、JSP などによって提供される既存の機能を活用することもできます。
- URL だけでなく HTML も完全に制御できます。
- テスト駆動開発 (TDD) をサポートします。
- このアーキテクチャはロジックの分離を提供する
- SEO フレンドリーな URL のルーティングを許可します。
- わかりやすく検索可能な URL のマップを提供します。
MVVMの特徴
MVVM アーキテクチャの特徴は次のとおりです。
- MVVM は、データ バインディング機能 (XAML および INotifyPropertyChanged インターフェイス) を備えたデスクトップ アプリケーション用に作成されています。
- ビューモデルで変更を行う場合、ビューモデルはオブザーバー パターンを使用します。
- MVVM パターンは主に次のように使用されます。 WPF、Silverlight、nRouteなど。
MVC の利点
MVCの利点/利点は次のとおりです
- 新しいタイプのクライアントのサポートが容易になりました
- さまざまなコンポーネントの開発は並行して実行できます。
- アプリケーションを個別の(MVC)ユニットに分割することで複雑さを回避します。
- 単一のコントローラーを使用して Web アプリケーション要求を処理するフロント コントローラー パターンのみを使用します。
- テスト駆動開発に最適なサポートを提供します
- これは、Web デザイナーと開発者の大規模なチームによってサポートされている Web アプリに適しています。
- これは、懸念事項の明確な分離 (SoC) を提供します。
- すべてのクラス化されたオブジェクトとオブジェクトは互いに独立しているため、個別にテストできます。
- MVC では、コントローラー上の関連するアクションを論理的にグループ化できます。
MVVMの利点
MVVMの長所/利点は次のとおりです
- ビジネスロジックはULから切り離されています
- 保守とテストが簡単
- コンポーネントの再利用が容易
- 疎結合アーキテクチャ: MVVM はアプリケーション アーキテクチャを疎結合にします。
- ビューを参照する必要なく、ビューモデルとモデル層の両方の単体テスト ケースを作成できます。
MVCの欠点
MVCの短所/欠点は次のとおりです
- ビジネスロジックとULが混在
- テストの再利用と実装が難しい
- 正式な検証サポートはありません
- データの複雑さと非効率性の増大
- 最新のユーザー インターフェイスで MVC を使用することの難しさ
- 並列プログラミングを行うには複数のプログラマが必要です。
- 複数のテクノロジーに関する知識が必要です。
MVVMのデメリット
MVVMの短所/欠点は次のとおりです
- コントローラー内の大量のコードのメンテナンス
- シンプルな UI の場合、MVVM アーキテクチャはやり過ぎだと考える人もいます。
- ビューとビューモデル間の密結合は提供しません