回答:
N層アーキテクチャーは通常、ネットワークによって分離された各層を持っています。IEのプレゼンテーションレイヤーは一部のWebサーバー上にあり、ビジネスロジックのためにネットワーク経由でバックエンドアプリサーバーと通信します。次に、ネットワーク経由でデータベースサーバーと通信します。また、アプリサーバーもいくつかのリモートサービスを呼び出します(支払い処理についてはAuthorize.netと言います)。
MVCはプログラミング設計パターンであり、コードのさまざまな部分が、一部のアプリケーションでモデル、ビュー、コントローラーを表す役割を果たします。たとえば、モデルレイヤーには、データを格納および取得するためにデータベースを呼び出す内部実装がある場合があるため、これら2つは関連しています。コントローラはウェブサーバーに常駐し、データを取得するためにリモートでアプリサーバーを呼び出します。MVCは、アプリのアーキテクチャの実装方法の詳細を抽象化します。
N層とは、実装の物理構造を単に指します。MVC設計は多くの場合N層アーキテクチャーを使用して実装されるため、これら2つは混乱することがあります。
3層設計が次のような場合:
Client <-> Middle <-> Data
MVCパターンは次のようになります。
Middle
^ |
| v
Client <- Data
つまり:
PS クライアントがビューであり、コントローラーがミドルになります
これは、n層アーキテクチャについて言うことです
一見すると、3つの層はMVC(Model View Controller)の概念に似ているように見えるかもしれません。ただし、トポロジ的には異なります。3層アーキテクチャーの基本的なルールは、クライアント層がデータ層と直接通信しないことです。3層モデルでは、すべての通信がミドルウェア層を通過する必要があります。概念的には、3層アーキテクチャは線形です。ただし、MVCアーキテクチャは三角形です。ビューはコントローラーに更新を送信し、コントローラーはモデルを更新し、ビューはモデルから直接更新されます。
唯一の類似点は、2つのパターンのダイアグラムに3つのボックスがあることです。基本的に、それらは用途が完全に異なります。事実、通常はどちらのパターンを使用するかを選択することはできませんが、両方のパターンを組み合わせて使用することができます。2つを比較すると、次のようになります。http://allthingscs.blogspot.com/2011/03/mvc-vs-3-tier-pattern.html
@Cherry Middle wareは、MVCパターンのリクエストハンドラーまたはリダイレクターのように機能します。
MVCについて少し説明したいと思います。私によれば、Model View Controllerはこのように動作します。
それは私が知っているMVCについてのすべてです。
休憩してください。また、現実の問題を解決するときに、特定のパターンに制限する必要はありません。いくつかの一般原則を覚えておいてください。そのうちの1つは「懸念の分離」です。
N層アーキテクチャは、配置図を使用して定義するのが最適です。
MVCアーキテクチャは、シーケンス図を使用して最適に定義されます。
2つは同じではなく、関連もありません。2つのアーキテクチャを組み合わせることができます。多くの企業が、配備とスケーラビリティだけでなく、コードの再利用のためにもN層のアーキテクチャを作成するための手順を実行しています。
たとえば、ビジネスエンティティオブジェクトは、デスクトップアプリ、クライアント向けに公開されたウェブサービス、ウェブアプリ、またはモバイルアプリで使用する必要がある場合があります。MVCアプローチを使用するだけでは、何も再利用できません。
ジェリー:2つがどのように関連しているかの簡単な例を次に示します。
Tier 1-ある種のネットワークサービスまたは同様のコントローラーを介してTier 2と通信するモデルで構成され、入力の検証、計算、およびビューに関連するその他のことを処理します。もちろん、ビュー自体も含まれます。これは、デスクトップアプリのGUIや、ウェブアプリのウェブインターフェースにすることができます。
Tier 2-ある種のサービスまたはTier 1からのメッセージを受信する他の方法が含まれます。Tier1について知らない/知らないため、上からの呼び出しにのみ応答できます。単独で要求することはありません。すべてのビジネスロジックも含まれます。
層3-ドメインモデル、データベースのオブジェクト表現、およびデータベースエントリを通信および更新するためのすべてのロジックが含まれます。
3層モデルでは、すべての通信が中間層を通過する必要があります。概念的には、3層アーキテクチャは線形です。ただし、[model-view-controller] MVCアーキテクチャは三角形です。ビューはコントローラーに更新を送信し、コントローラーはモデルを更新し、ビューはモデルから直接更新されます。