ホームページ  >  記事  >  バックエンド開発  >  MVC フレームワークとは何ですか? ここに答えがあります_実践的なヒントです。

MVC フレームワークとは何ですか? ここに答えがあります_実践的なヒントです。

韦小宝
韦小宝オリジナル
2017-12-15 11:42:001511ブラウズ

MVC は、アプリケーションの入力、処理、出力の分離を強制する 設計パターン です。この記事では MVC フレームワークとは何かを詳しく紹介しており、MVC に興味のある友人は参考にしてください

MVC (Model View Controler) はもともとデスクトップ プログラムに存在し、M はデータ モデル、V はユーザー インターフェイス、C はコントローラーを指します。 MVC を使用する目的は、M と V の実装コードを分離し、同じプログラムで異なる表現を使用できるようにすることです。たとえば、統計データのバッチをそれぞれ棒グラフと円グラフで表すことができます。 C の目的は、M と V の同期を確保することです。M が変更されると、V も同期して更新される必要があります。

Model-View-Controller (MVC) は、1980 年代に Xerox PARC によって プログラミング言語 Smalltalk-80 用に発明されたソフトウェア設計パターンであり、現在広く使用されています。近年では、Sun の J2EE プラットフォームの設計パターンとして推奨されており、ColdFusion や PHP を使用する開発者がますます多くなっています。 Model-View-Controller パターンは、多くの利点がある便利なツールボックスですが、いくつかの欠点もあります。

MVC の仕組み

MVC は、アプリケーションの入力、処理、出力の分離を強制する設計パターンです。 MVC を使用するアプリケーションは、モデル、ビュー、コントローラーの 3 つのコア コンポーネントに分割されます。彼らはそれぞれ独自のタスクを処理します。

View

View は、ユーザーが表示して操作するインターフェイスです。旧式の Web アプリケーションの場合、ビューは HTML 要素 で構成されるインターフェイスです。新しいスタイルの Web アプリケーションでも、HTML は依然としてビュー内で重要な役割を果たしていますが、Macromedia Flash やその他の新しいテクノロジーが絶え間なく登場しています。マークアップ言語や、XHTML、XML/XSL、WML などの Web サービス

アプリケーションのインターフェイスをどのように処理するかは、ますます困難になってきています。 MVC の大きな利点の 1 つは、アプリケーションのさまざまなビューを処理できることです。データがオンラインで保存されているか、従業員のリストで保存されているかにかかわらず、ビューでは実際の処理は発生せず、データを出力してユーザーが操作できるようにする手段としてのみ機能します。

モデル

モデルは、企業データとビジネス ルールを表します。 MVC の 3 つのコンポーネントの中で、モデルには最も多くの処理タスクがあります。たとえば、EJB や ColdFusion コンポーネントなどのコンポーネント オブジェクトを使用してデータベースを処理する場合があります。モデルによって返されるデータはニュートラルです。これは、モデルがデータ形式とは何の関係もないことを意味するため、モデルは複数のビューにデータを提供できます。モデルに適用されるコードは 1 回記述するだけで済み、複数のビューで再利用できるため、コードの重複が削減されます。

コントローラー

コントローラーはユーザー入力を受け入れ、モデルとビューを呼び出してユーザーのニーズを満たします。そのため、Web ページ内のハイパーリンクがクリックされて HTML フォーム が送信された場合、コントローラー自体は何も出力したり、処理を実行したりしません。リクエストを受信し、リクエストを処理するためにどのモデル コンポーネントを呼び出すかを決定し、モデル処理によって返されたデータを表示するためにどのビューを使用するかを決定するだけです。

次に、MVC の処理プロセスを要約します。まず、コントローラーがユーザーのリクエストを受け取り、処理のためにどのモデルを呼び出すかを決定します。次に、モデルはビジネス ロジックを使用してユーザーのリクエストを処理し、最後にコントローラーがデータを返します。モデルによって返されたデータは、プレゼンテーション層を通じてユーザーに表示されます。

MVC を使用する理由

ほとんどの Web アプリケーションは、ASP、PHP、または CFML などの手続き型言語を使用して作成されます。データベース クエリなどのデータ レベルのコードと、HTML などのプレゼンテーション レベルのコードが混在しています。

経験豊富な開発者はプレゼンテーション層からデータを分離しますが、これを行うのは通常は簡単ではありません。慎重な計画と継続的な試みが必要です。 MVC では基本的にそれらを強制的に分離します。 MVC アプリケーションの構築には追加の作業が必要ですが、それによってもたらされる利点は疑いの余地がありません。

何よりもまず、複数のビューがモデルを共有することが重要です。前述したように、アプリケーションにアクセスする方法はますます増えています。これに対する 1 つの解決策は、ユーザーが Flash インターフェイスを希望するか WAP インターフェイスを希望するかに関係なく、1 つのモデルですべてを処理できる MVC を使用することです。データとビジネス ルールをプレゼンテーション層から分離したため、コードを最大限に再利用できます。

モデルから返されるデータはフォーマットされていないため、同じコンポーネントを異なるインターフェイスで使用できます。たとえば、多くのデータは HTML で表現されますが、Macromedia Flash や WAP で表現されることもあります。モデルには、状態管理およびデータ永続化機能も備わっています。たとえば、セッションベースのショッピング カートや電子商取引プロセスは、Flash Web サイトやワイヤレス ネットワーク アプリケーションによって再利用することもできます。

モデルは自己完結型であり、コントローラーやビューから切り離されているため、アプリケーションのデータ層やビジネス ルールを簡単に変更できます。データベースを MySQL から Oracle に移行する場合、または RDBMS ベースのデータ ソースを LDAP に変更する場合は、モデルを変更するだけです。

モデルを正しく実装すると、データがデータベースからのものであっても LDAP サーバーからのものであっても、ビューに正しく表示されます。 MVC を使用するアプリケーションの 3 つのコンポーネントは相互に排他的であるため、そのうちの 1 つを変更しても他の 2 つは影響を受けないため、この設計アイデアに基づいて適切な疎結合コンポーネントを構築できます。

私にとって、コントローラーには利点もあります。つまり、コントローラーを使用してさまざまなモデルやビューを接続してユーザーのニーズを満たせるため、コントローラーはアプリケーションを構築するための強力な手段を提供できます。再利用可能なモデルとビューがいくつかある場合、コントローラーはユーザーのニーズに応じて処理するモデルを選択し、ビューを選択して処理結果をユーザーに表示できます。

MVC の欠点

MVC の欠点は、明確な定義がないため、MVC を完全に理解するのがそれほど簡単ではないことです。 MVC の使用には慎重な計画が必要であり、その内部原理が複雑であるため、検討するのに時間がかかります。

MVC をアプリケーションに適用する方法を考えるのにかなりの時間を費やす必要がありますが、同時にモデルとビューを厳密に分離する必要があるため、アプリケーションのデバッグも困難になります。すべてのコンポーネントは使用前に徹底的にテストする必要があります。コンポーネントをテストしたら、心配することなく再利用できます。

私の個人的な経験によれば、アプリケーションを 3 つのコンポーネントに分割するため、MVC を使用すると、以前よりも多くのファイルを管理する必要があることも意味しますが、これは明らかです。これは私たちの仕事量が増加しているように見えるかもしれませんが、それが私たちにもたらすメリットに比べれば、これは何でもないことを覚えておいてください。

MVC は小規模または中規模のアプリケーションには適していません。それほど大きくないアプリケーションに MVC を適用することに多くの時間を費やすと、通常は利益よりも損失の方が大きくなります。

MVC はソフトウェアを作成するための優れた方法です

MVC デザイン パターンは、コンテンツと表示の分離など、MVC が提唱するいくつかの原則は理解しやすいかもしれません。ただし、モデル、ビュー、コントローラーのコンポーネントを分離したい場合は、アプリケーション、特にアプリケーションのアーキテクチャ面を再考する必要があるかもしれません。 MVC を受け入れる意思があり、MVC がもたらす余分な作業と複雑さに対処できる能力がある場合、MVC は堅牢性、コードの再利用、構造の点でソフトウェアを新しいレベルに引き上げます。

関連する推奨事項:

MVC フレームワークとは

PHP で MVC フレームワークのルーティング関数を実装する方法。

MVC で生成されたページ番号セレクターが HTML コードを返す方法の詳細な説明?

以上がMVC フレームワークとは何ですか? ここに答えがあります_実践的なヒントです。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。