web-dev-qa-db-ja.com

Webアプリケーション開発のためのMVC対HMVC

Web開発にMVCパターンを使用しています。私はcodeIgniterフレームワークを使用しています。 http://fuelphp.com/http://kohanaframework.org/ が見つかりました。HMVCを使用しています。まだHMVCが明確ではなく、なぜMVCの代わりにHMVCを使用する必要があるのですか? HMVCパターンを読んだ後、私は混乱し、MVCとあまり変わらない。 Webアプリケーション開発にHMVCを使用する理由を説明できますか?

27
saturngod

Hierarchical-Model-View-Controller(HMVC)パターンは、MVCパターンを直接拡張したもので、すでに述べたスケーラビリティの問題の多くを解決します。 HMVCは、2000年7月にJavaWorld Webサイトで HMVC:強力なクライアント層を開発するための階層化パターン というタイトルのブログ投稿で最初に説明されました。この記事の多くは、グラフィカルユーザーインターフェイスでHMVCを使用する利点に集中しています。 。 一部の提案 があり、著者は1987年に説明されたPresentation-Abstraction-Control(PAC)と呼ばれる別のパターンを実際に再解釈しています。JavaWorldの記事は、HMVCがどのように役立つかについての詳細な説明を提供しますGUIを使用したデスクトップアプリケーションの設計。この記事の焦点は、HMVCを使用してスケーラブルなWebアプリケーションを作成する方法を示すことです。

HMVCは、1つのアプリケーションとして動作する従来のMVCトライアドのコレクションです。各トライアドは完全に独立しており、他の存在なしで実行できます。トライアドへのすべてのリクエストは、コントローラーインターフェイスを使用する必要があり、独自のドメイン外のモデルやライブラリをロードすることはありません。システムの他のすべての部分からアクセスできる限り、ホスティング環境内のトライアドの物理的な場所は重要ではありません。 HMVCの特徴的な機能により、既存のコードの再利用が促進され、システムの異なる部分のテストが簡素化され、アプリケーションの拡張や拡張が容易になります。

From HMVCを使用したWebアプリケーションのスケーリング by Sam de Freyssinet

21
alex

HMVCはMVCができることは何でもできます

mVCで苦労したことの1つは、別のコントローラーからコントローラーを呼び出すことができないことです(カスタムライブラリまたはヘルパーを使用しない限り)。

hMVC(階層モデルビューコントローラー)では、それを行うことができます。ここにあるすべての品質を合計します。

  • 他のプロジェクトでコードを再利用する
  • プロジェクトのメンテナンスを簡素化
  • プロジェクトをスケーリングする
  • コードを整理する
  • モジュール構造

hMVCを試した後にMVCに戻ることはありません。

See picture

codeIgniterで使用する「Modular Extensions-HMVC」

モジュラーエクステンションは、CodeIgniterをモジュール化しますPHP=フレームワークをモジュール化します。モジュールは、他のCodeIgniterアプリケーションにドロップできるアプリケーションモジュールサブディレクトリに配置された、通常はモデル、コントローラー、ビューの独立したコンポーネントのグループです。

モジュールコントローラーは、通常のコントローラーまたはHMVCコントローラーとして使用でき、ビューパーシャルの構築に役立つウィジェットとして使用できます。

hMVCパターンでcodeigniterを使用する場合は、Modular Extensions-HMVCを使用できます

https://bitbucket.org/wiredesignz/codeigniter-modular-extensions-hmvc

そしてここにあなたを得るRailsでcodeigniterのHMCVを使用するいくつかの素敵で面白いビデオチュートリアルがあります

https://www.youtube.com/watch?v=8fy8E_C5_qQ&list=PLBEpR3pmwCawDZ6FgNYoyvicEz4HrJPec&index=1

お役に立てば幸いです。

30
Nassim

チェックアウトする必要がある別のHMVCフレームワークは Alloy です。私は HMVCアーキテクチャ のマニュアルページの素人の言葉で、そして このStackOverflow応答 で同様の質問に概念を説明しようとしました。

4
Vance Lucas