web-dev-qa-db-ja.com

MVC対n層アーキテクチャ

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

乾杯

139
Arnkrishn

N層アーキテクチャでは、通常、各層がネットワークで分離されています。 I.E.プレゼンテーション層は一部のWebサーバー上にあり、ビジネスロジックのためにネットワーク経由でバックエンドアプリサーバーと通信し、次にネットワーク経由でデータベースサーバーと通信し、アプリサーバーがリモートサービス(たとえば、支払い処理のためのAuthorize.net)。

MVCはプログラミング設計パターンであり、コードのさまざまな部分が一部のアプリケーションでモデル、ビュー、コントローラーを表す役割を果たします。たとえば、モデル層には、データを保存および取得するためのデータベースを呼び出す内部実装が含まれている可能性があるため、これら2つのことは関連しています。コントローラーはWebサーバーに常駐し、リモートでappserverを呼び出してデータを取得できます。 MVCは、アプリのアーキテクチャの実装方法の詳細を抽象化します。

N層とは、単に実装の物理構造を指します。 MVC設計は多くの場合N層アーキテクチャを使用して実装されるため、これら2つは混同されることがあります。

91
Zak

3層設計が次のような場合:

Client <-> Middle <-> Data

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

     Middle
     ^    |
     |    v
Client <- Data

意味:

  • 3層の同等物では、層間の通信は双方向および常に中間層を通過します
  • mVC同等では、通信は単方向にあります。 各「レイヤー」は左側のレイヤーによって更新され、順番に右側のレイヤーが更新されます –「左側」と「右側」は単なる例示です

追伸クライアントViewおよびMiddleController

41
void

これは何 - について n層アーキテクチャ

一見すると、3つの層はMVC(Model View Controller)の概念に似ているように見えるかもしれません。ただし、トポロジ的には異なります。 3層アーキテクチャの基本的なルールは、クライアント層がデータ層と直接通信しないことです。 3層モデルでは、すべての通信はミドルウェア層を通過する必要があります。概念的には、3層アーキテクチャは線形です。ただし、MVCアーキテクチャは三角形です。Viewはコントローラーに更新を送信し、Controllerはモデルを更新し、Viewはモデルから直接更新されます。

30
Xinus

唯一の類似点は、2つのパターンのダイアグラムに3つのボックスがあることです。基本的には、用途がまったく異なります。実際、使用するパターンを選択することは通常ありませんが、両方のパターンを一緒に使用することができます。以下は、2つの優れた比較です。 http://allthingscs.blogspot.com/2011/03/mvc-vs-3-tier-pattern.html

16
allthingscs

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

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

5
pooja gupta

休憩してください。また、現実の問題を解決する際に特定のパターンに制限しないでください。いくつかの一般原則を思い出してください。そのうちの1つは、懸念の分離です。

5
smwikipedia

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

私によると、MVCについて少し説明したいと思います。ModelView Controllerはこのように機能します。

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

MVCについてはすべて知っています。

5
Aqeel Ahmad

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

4
alkematic

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

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

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

たとえば、ビジネスエンティティオブジェクトは、デスクトップアプリ、クライアント用に公開されたWebサービス、Webアプリ、またはモバイルアプリによって消費される必要がある場合があります。 MVCアプローチを使用するだけでは、何も再利用できません。

3
Ed DeGagne

結論:N層はアーキテクチャであり、MVCは設計パターンです。これらは、2つの異なるフィールドに適用される同じメタファーです。

2
ychaouche

ジェリー:以下は、この2つがどのように関連しているかの簡単な例です。


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


Tier 2-Tier 1からメッセージを受信する何らかのサービスまたはその他の方法が含まれます。Tier1については知らない/知らないため、上からの呼び出しにのみ応答できます。 。すべてのビジネスロジックも含まれています。


Tier-ドメインモデル、データベースのオブジェクト表現、およびデータベースエントリの通信と更新を行うすべてのロジックが含まれます。

1
Arve Systad

3層モデルでは、すべての通信が中間層を通過する必要があります。概念的には、3層アーキテクチャは線形です。ただし、[model-view-controller] MVCアーキテクチャは三角形です。ビューはコントローラーに更新を送信し、コントローラーはモデルを更新し、ビューはモデルから直接更新されます。

0
hassan ketabi