ホームページ  >  記事  >  バックエンド開発  >  MVC pattern_PHP チュートリアルとは

MVC pattern_PHP チュートリアルとは

WBOY
WBOYオリジナル
2016-07-13 10:52:25854ブラウズ

MVCパターン

MVCモードは「Model-View-Controller」の略称で、中国語訳は「Mode-View-Controller」です。 MVCApplicationProgramは常にこれらの 3 つの部分で構成されます。イベント (event) により、コントローラーはモデルまたはビュー、あるいはその両方を同時に変更します。コントローラーがモデルのデータまたはプロパティを変更する限り、依存するすべてのビューは自動的に更新されます。 と同様、コントローラーがビューを変更する限り、ビューは基礎となるモデルからデータを取得して自身を更新します。 MVC パターンは、Smalltalk 言語研究グループによって最初に提案され、ユーザー対話アプリケーションで使用されています。 smalltalk 言語と Java 言語には多くの類似点があります。これらはどちらも オブジェクト指向言語 です。当然のことながら、SUN はペットストアで Web アプリケーションを開発するための アーキテクチャ パターンとして MVC パターンを推奨しました。ペットショップ)のアプリケーション例。 MVC パターンは、実際には他のパターンのコラボレーションを必要とするアーキテクチャ パターンです。 J2EE モード ディレクトリでは、通常、Service to Worker モードが実装されており、Service to Worker モードは集中コントローラー モード、ディスパッチャー モード、ページ ヘルパー モードで構成できます。 StrutsはMVCのView部分とController部分のみを実装します。開発者がStrutsフレームワークにModelを適用できるように、Strutsは開発者自身が抽象クラスを実装する必要があります。 MVC パターンは複雑なアーキテクチャ パターンであり、その実装も非常に複雑です。ただし、多くの信頼できる 設計パターン が完成しました。複数の設計パターンを組み合わせることで、MVC パターンの実装が比較的シンプルかつ簡単になります。ビューはツリーとして表示でき、これは明らかに Composite Pattern を使用して実装できます。ビューとモデルの間の関係は、オブザーバー パターンに反映できます。コントローラーは、戦略パターンを使用して実装できるビューの表示を制御します。モデルは通常メディエーターであり、メディエーター パターンを使用して実装できます。
次に、MVC の 3 つの部分が J2EE アーキテクチャのどこにあるかを理解しましょう。これは、MVC パターンの実装を理解するのに役立ちます。 MVC と J2EE アーキテクチャの対応関係は次のとおりです。ビューは Web 層またはクライアント層にあり、通常は JSP/サーブレットであり、ページ表示部分です。コントローラーも Web 層にあり、通常はサーブレットで実装されます。つまり、ページ表示の論理部分が実装されます。モデルは中間層にあり、通常はサーバー側で JavaBean または EJB を使用して実装されます。つまり、ビジネス ロジック部分の実装です。
1. MVC デザインのアイデア
MVCは英語でModel-View-Controllerといい、アプリケーションの入力・処理・出力の処理をModel、View、Controllerで分離することにより、アプリケーションをモデル層、ビューの3層に分けます。レイヤーとコントロールレイヤー。
Viewはユーザーインタラクションインターフェースを表し、Webアプリケーションの場合はHTMLインターフェースとしてまとめられますが、XHTML、XML、アプレットの場合もあります。アプリケーションの複雑さと規模が増大するにつれて、インターフェイスの処理が困難になります。アプリケーションにはさまざまなビューが存在する場合があります。MVC デザイン パターンによるビューの処理は、ビュー上のデータの収集と処理、およびユーザー リクエストに限定されますが、ビュー上のビジネス プロセスの処理は含まれません。ビジネスプロセスの処理はモデルに引き継がれます。たとえば、オーダー ビューはモデルからのデータのみを受け入れてユーザーに表示し、入力データとリクエストをユーザー インターフェイスからコントロールとモデルに渡します。 モデル:ビジネスプロセス・状態の処理とビジネスルールの策定です。ビジネス プロセスの処理は、他のレイヤーにとってはブラック ボックス操作であり、モデルはビューによって要求されたデータを受け取り、最終的な処理結果を返します。ビジネスモデルの設計はMVCの最も重要な核と言えます。現在普及している EJB モデルは、既存のコンポーネントを最大限に活用するために、アプリケーション技術の実装の観点からモデルをさらに分割した典型的なアプリケーション例ですが、アプリケーション設計モデルのフレームワークとして使用することはできません。このモデルに従って設計すると、特定の技術コンポーネントを利用できるため、技術的な問題が軽減されるということだけがわかります。開発者はビジネス モデルの設計に集中できます。 MVC 設計パターンは、アプリケーション モデルが特定の規則に従って抽出されることを示しています。これは、開発者が優れているかどうかを判断するための設計基準でもあります。抽象性と具体性は、離れすぎても近すぎてもいけません。 MVC はモデル設計方法を提供せず、モデルの再構築を容易にし、再利用性を向上させるために、これらのモデルを編成および管理する必要があることを示すだけです。オブジェクト プログラミングを例に挙げると、MVC はトップレベルのクラスを定義し、そのサブクラスにこれらのことしか実行できないことを指示しますが、実行できることを制限する方法はありません。これはプログラミング開発者にとって非常に重要です。
ビジネスモデルにはもう一つ非常に重要なモデルがあります、それはデータモデルです。データ モデルは主にエンティティ オブジェクトのデータ ストレージ (永続化) を指します。たとえば、注文をデータベースに保存し、データベースから注文を取得します。このモデルは個別にリストすることができ、すべてのデータベース関連の操作はこのモデルに限定されます。
コントローラーは、ユーザーからのリクエストを受け取り、モデルとビューを一緒に照合し、ユーザーのリクエストを共同で完了するものとして理解できます。コントロール層を分割する役割も非常に明確で、ディストリビューターであること、どのようなモデルが選択されるか、どのようなビューが選択されるか、どのようなユーザーのリクエストを完了できるかが明確になります。制御層はデータ処理を行いません。たとえば、ユーザーが接続をクリックし、制御層がリクエストを受け入れる場合、制御層はビジネス情報を処理せず、ユーザーの情報をモデルに渡し、モデルに何をすべきかを指示し、要件を満たすビューを選択するだけです。ユーザーに戻ります。したがって、1 つのモデルが複数のビューに対応する場合や、1 つのビューが複数のモデルに対応する場合があります。
モデル、ビュー、コントローラーを分離することで、モデルに複数の表示ビューを持たせることができます。ユーザーがビューのコントローラーを通じてモデルのデータを変更した場合、そのデータに依存する他のすべてのビューにそれらの変更が反映される必要があります。したがって、データが変更されるたびに、コントローラーはすべてのビューに変更を通知し、表示を更新します。これは実際にはモデル変更伝播メカニズムです。モデル、ビュー、コントローラーの関係とそれぞれの主な機能を図 1 に示します。

2. MVCデザインパターンの実装
ASP.NET は、この古典的なデザイン パターンを実装するための優れた同様の環境を提供します。開発者は、ASPX ページでユーザー インターフェイスを開発することによってビューを実装します。コントローラー関数は、通常、アプリケーション システムのビジネス部分に対応する論理関数コード (.cs) で実装されます。この設計を ASP.NET に実装すると、従来の ASP 構造で実装されたシステムに比べて明らかな利点がある多層システムが提供されます。ユーザー表示 (ビュー) をアクション (コントローラー) から分離すると、コードの再利用性が向上します。データ (モデル) を、データ上で動作するアクション (コントローラー) から分離すると、バックグラウンドでのデータの保存から独立したシステムを設計できます。 MVC 構造は、その性質上、結合システムの問題を解決する方法です。
2.1ビュー
ビューはモデルの表現であり、ユーザー対話インターフェイスを提供します。単一の表示ページを含む複数のユーザー ウィジェットを使用すると、複雑な Web ページに複数のデータ ソースからのコンテンツを表示でき、Web 開発者やアーティストはこれらの Web ページの開発と保守に独立して参加できます。
ASP.NET では、ビューの実装は非常に簡単です。統合開発環境では、WINDOWS インターフェイスの開発と同様に、コントロールをドラッグすることでページの開発を直接完了できます。この記事では、各ページが複合ビューの形式を採用していることを紹介します。つまり、ページは複数のサブビュー (ユーザー パーツ) で構成されます。サブビューは、複数の入れ子になったコントロールで構成される最も単純な HTML コントロール、サーバー コントロール、または Web カスタマイズです。 。ページはテンプレートによって定義されます。テンプレートはページのレイアウト、ラベル、ユーザー コンポーネントの数を定義し、プラットフォームはこの情報に基づいてページを自動的に作成します。サイト ナビゲーション、メニュー、ページ上のフレンドリ リンクなどの静的テンプレート コンテンツの場合は、デフォルトのテンプレート コンテンツ構成が使用されます。動的テンプレート コンテンツ (主にビジネス コンテンツ) の場合は、ユーザーの要求が異なるため、バインディング後の設定のみを使用できます。ユーザーコンポーネントの表示内容は、さまざまなユーザーに従ってフィルタリングされます。再利用性が向上し、テンプレートから構成されたユーザー ウィジェットで構成される構成ページを使用してサイトのレイアウトのプロトタイプが作成されます。
ビュー部分の一般的な処理フローは次のとおりです: まず、ページ テンプレートがページのレイアウトを定義し、ページ構成ファイルがビュー タグ (ユーザー コンポーネント) の特定のコンテンツを定義します。それに応じて各ユーザーコンポーネントをロードします。ユーザーが送信した後、独自の構成をロードし、パラメーターを設定し、プレゼンテーション層とユーザーの検証を通過します。コンポーネントは、データをビジネス エンティティ、つまりモデルに自動的に送信します。
この部分は主に WEB ページの基本クラス PageBase を定義します。ページ レイアウトを完成させ、ユーザー コンポーネントの基本クラスである UserControlBase をページにロードします。検査コンポーネントを動的にロードし、ウィジェットのユーザーパーソナライゼーションを実装するために使用されます。 WEB アプリケーションの柔軟性を実現するために、ビュー部分でも多くの設定ファイルが使用されます。たとえば、設定ファイルには、テンプレート設定、ページ設定、パス設定、検証設定などが含まれます。
2.2コントローラー
ユーザーごとに複数のリクエストの処理を制御および調整できるようにするには、制御メカニズムを集中管理する必要があります。そこで、一元管理を目的としてコントローラーが導入されています。アプリケーションのコントローラーはクライアント (通常はブラウザーを実行しているユーザー) からのリクエストを一元的に受信し、どのビジネス ロジック機能を実行するかを決定し、ユーザー インターフェイスの次のステップを生成する責任を適切なビュー コンポーネントに委任します。
コントローラーを使用して、リクエストを制御および処理するための集中エントリ ポイントを提供します。コントローラーは、ユーザーのリクエストを受信、インターセプト、処理し、リクエストをディストリビューター クラスに委任し、現在のステータスと状況に基づいて顧客に表示するビューを決定します。事業運営の結果。この部分では主にHttpReqDispatcher(ディストリビュータクラス)、HttpCapture(リクエストキャプチャクラス)、Controller(コントローラクラス)などが定義されており、これらが連携してコントローラの機能を完成させます。リクエスト キャプチャ クラスは HTTP リクエストをキャプチャし、コントローラ クラスに転送します。コントローラー クラスは、すべてのリクエストを処理するためのシステムへの最初のエントリ ポイントです。コントローラーが必要な処理を完了すると、リクエストをディストリビューター クラスに委任します。ディストリビューター クラスのディストリビューターは、ビューの管理とナビゲーションを担当し、ユーザーに提供するビューを管理し、配布リソースの制御を提供します。 。この部分では、ディストリビュータ、ストラテジ、ファクトリメソッド、アダプタなどの設計パターンがそれぞれ使用されます。
リクエスト キャッチャー クラスがユーザー リクエストを自動的にキャプチャして処理できるようにするために、ASP.NET は、開発者が .NET Framework クラスを使用して受信 HTTP リクエストを処理できるようにする低レベルのリクエスト/レスポンス API を提供します。これを行うには、System.Web.IHTTPHandler インターフェイスをサポートし、ProcessRequest() メソッドを実装するクラス (要求キャプチャ クラス) を作成し、そのクラスを web.config の セクションに追加する必要があります。 ASP.NET が受信する各受信 HTTP 要求は、最終的に IHTTPHandler を実装するクラスの特定のインスタンスによって処理されます。 IHttpHandlerFactory は、IHttpHandler インスタンスの URL 要求の実際の解析を処理する構造を提供します。 HTTP ハンドラーとファクトリーは、ASP.NET 構成で web.config ファイルの一部として宣言されます。 ASP.NET は、ハンドラーとファクトリーを追加および削除できる 構成セクションを定義します。サブディレクトリは、HttpHandlerFactory および HttpHandler から設定を継承します。 HTTP ハンドラーとファクトリーは、ASP.NET ページ フレームワークの本体です。ファクトリは、各リクエストをハンドラに割り当て、ハンドラがリクエストを処理します。 たとえば、グローバル machine.config ファイルでは、ASP.NET は ASPx ファイルに対するすべてのリクエストを HttpCapture クラスにマップします。 <httphandlers>
... ...
</httphandlers>

2.3モデル
MVCシステムのモデルは概念的に2つのカテゴリに分類できます

http://www.bkjia.com/PHPjc/632486.html

tru​​ehttp://www.bkjia.com/PHPjc/632486.html技術記事 MVC モード MVC モードは Model-View-Controller の略で、中国語訳はモード ビュー コントローラーです。 MVC アプリケーションは常に次の 3 つの部分で構成されます。イベント(出来事)が原因で制御...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。