質問

MVC (アーキテクチャ パターン) とアプリケーションの n 層アーキテクチャの違いは正確には何だろうと疑問に思っていました。調べてみましたが、簡単な説明は見つかりませんでした。私は MVC の概念について少し世間知らずかもしれないので、違いを説明できる人がいれば、それは素晴らしいことです。

乾杯

役に立ちましたか?

解決

N層アーキテクチャは、通常、ネットワークによって分離された各レイヤを有しています。即ちプレゼンテーション層、ビジネスロジックのためのネットワーク上でのバックエンドアプリケーションサーバへの交渉は、再度ネットワーク上のデータベース・サーバへの交渉、そしておそらくアプリケーションサーバも言う(一部のリモートサービスに声をかけていることことを、その後、いくつかのWebサーバー上にあります決済処理のためのAuthorize.net)。

MVCは、コードの異なる部分が、いくつかのアプリケーションでモデル、ビュー、コントローラを表すための責任があるプログラミングのデザインパターンです。例えばモデル層は、データを格納および取得するためのデータベースを呼び出す内部実装を有していてもよく、ため、これら二つのことが関連しています。コントローラは、ウェブサーバ上に存在し、リモートデータを取得するためのアプリケーション・サーバを呼び出すことができます。 MVCは、アプリケーションのアーキテクチャを実装する方法の詳細を抽象化。

N層だけ実装の物理的構造を指します。 MVC設計は、多くの場合、N層アーキテクチャを使用して実装されているため、これら二つは時々混乱している。

他のヒント

3 層デザインが次のような場合:

Client <-> Middle <-> Data

MVC パターンは次のようになります。

     Middle
     ^    |
     |    v
Client <- Data

意味:

  • 3 層に相当する場合、層間の通信は次のようになります。 双方向 そして 常に中層を通過します
  • MVC に相当するものでは、通信は次のとおりです。 一方向;私たちはそれを言うことができます 各「レイヤー」は左側のレイヤーによって更新され、次に右側のレイヤーも更新されます。 –ここで、「左」と「右」は単なる例です

追伸 クライアント だろう ビュー そして 真ん中コントローラ

この何であるか = <についてのhrefを言う "http://en.wikipedia.org/wiki/Multitier_architecture" REL = "nofollowをnoreferrer"> n層アーキテクチャの

  

一見三段よいです   MVC(モデルビューに似ているようです   コントローラ)のコンセプト。しかしながら、   位相幾何学的に、彼らは異なっています。 A   三層の基本的なルール   アーキテクチャは、クライアント層になることはありません   データと直接通信   ティア; 3層モデル内のすべての   通信が通過しなければなりません   ミドルウェア層。概念的には   3層アーキテクチャは、線形です。   しかし、MVCアーキテクチャがあります   三角形:ビューへのアップデートを送信   コントローラー、コントローラーのアップデート   モデル、およびビューが更新されます   直接モデルから。

唯一の類似性は、2つのパターンを、それらの図の3つのボックスを有することです。基本的に彼らは、その用途が全く異なっています。事実ならば、それは通常使用するパターンの選択ではありませんが、両方のパターンが一緒にharmoneously使用することができます。ここでは、2つの良い比較である:ます。http:// allthingscs.blogspot.com/2011/03/mvc-vs-3-tier-pattern.htmlする

3層アーキテクチャの基本的なルールは、クライアント層は、データ層と直接通信されることはありません。 3層モデルでは、すべての通信は、ミドルウェア層を通過しなければなりません。

これは、ライナーアーキテクチャです。これは、ユーザとデータベースの間で情報を渡す方法の問題に対処しています。 MVCは、三角形のアーキテクチャである場合など:ビューコントローラに更新を送信し、コントローラは、モデルを更新し、ビューはモデルから直接更新されます。これは、ユーザーインターフェイスは、画面上のコンポーネントをどのように管理するかの質問に対処します。

@Cherryミドルウェアは、MVCパターンのリクエストハンドラーまたはリダイレクターのように機能します。

MVC について少し説明したいと思います。私によると、Model View Controller は次のように動作します。

  1. クライアントは、任意のサービスを要求してセッションを開始します。
  2. このリクエストはコントローラ (リクエストハンドラ、リダイレクタなど) によって受信され、処理されます。
  3. コントローラーはリクエストの基本情報を処理し、データリクエストを満たすことができる関連するモデルにそれをリダイレクトします。
  4. モデルはコントローラーから渡されたパラメーターに従ってリクエストを満たし、結果をコントローラーに送り返します。(注記:ここで、真の MVC アーキテクチャではデータがクライアントに直接返されるのではなく、データがいっぱいになってコントローラーに返されることを明確にしたいと思います。)
  5. コントローラーはそのデータをビュー(クライアント)に送信します。
  6. クライアントは目の前に要求されたサービスを持っています。

私が知っている MVC については以上です。

自分自身に休憩を与えます。実世界の問題を解決するときに特定のパターンに自分自身を制限するものではありません。ただ、いくつかの一般的な原則を覚えている、のいずれかがあるの関心の分離

線形であることに加え、ここでは十分に強調されていなかったもう一つの大きな違いは、N層モデルでは、Nは必ずしも3階層ではないということです!これは、ほとんどの場合、二つのサブ階層(ビジネスロジックとデータアクセス)を有する中間層との3つの階層(プレゼンテーション、アプリ、データ)として実装されています。これらは、n層に別の層であろう一方でまた、MVCにおけるモデルは、データ操作のための両方のデータおよびビジネスロジックを含めることができます。

N層アーキテクチャは、最良の配置図を使用して定義されます。

MVCアーキテクチャは最高のシーケンス図を使用して定義されます。

2は同じではありませんと関連していないと、あなたは、2つのアーキテクチャを組み合わせることができます。企業の多くは、同様の展開とスケーラビリティだけではないため、コードの再利用のためのN Tier'dアーキテクチャを作成するための措置を講じています。

たとえば、あなたのビジネスエンティティオブジェクトは、デスクトップアプリケーション、クライアントのために露出Webサービス、Webアプリケーション、またはモバイルアプリによって消費される必要があるかもしれません。単純にMVCのアプローチを使用すると、あなたはすべてのものを再利用する助けにはなりません。

結論:N階層アーキテクチャ、MVCデザインパターンです。彼らは、2つの異なるフィールドに適用したのと同じmetaphoreされます。

ジェリー:2 つの関係を示す簡単な例を次に示します。


ティア1 - ある種のネットワーク サービスまたは同様のものを介して Tier 2 と通信するモデル、入力検証、計算、およびビューに関連するその他のものを処理するコントローラーで構成されます。もちろん、ビュー自体も含まれています。これは、デスクトップ アプリの GUI、または Web アプリの Web インターフェイスである可能性があります。


ティア2 - Tier 1 からメッセージを受信する何らかのサービスまたはその他の方法が含まれています。Tier 1 については知らない/知らないはずなので、上からの呼びかけにのみ応答できます。決して自分から何かを要求することはありません。すべてのビジネス ロジックも含まれます。


ティア3 - ドメイン モデル、データベースのオブジェクト表現、およびデータベース エントリを通信および更新するためのすべてのロジックが含まれています。

3層モデルでは、すべての通信は、中間層を通過しなければなりません。概念的には3層アーキテクチャは、線形です。ただし、[モデル・ビュー・コントローラ] MVCアーキテクチャは、三角形である:ビューコントローラがモデルを更新、およびビューは、モデルから直接更新され、コントローラに更新を送信する

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top