2009-06-03 15 views
1

私の意見はです。Asp.net MVCはn層ソリューションの作成を支援しますか?

  1. ロジックとデータをUIから分離しますが、それでもすべてをまとめて1つのポイントアプリケーションにします。
  2. だからこそ、コントローラはビ​​ジネスロジック、ビューはUI、モデルはDALなので、実際にはそうではないと思います。これらは現在、同じアプリ内の単なるレイヤーです。

実際には層と呼ばれる第1または第2の種類であるはずの層ですか?

誰もが自分の2セントを追加したいですか?

+1

"crams"は不必要に感情的であり、コンポーネントが実際にはっきりと明確に描写されているかもしれない - 線分は直交している限り任意である( – annakata

+0

)ビジネスロジックを含まない - それはモードの役割ですl。モデルの背後にあるものは、必要に応じてn階層にすることができます。 MVCは本質的にUIパターンです。 – dice

答えて

4

MVCテンプレートプロジェクトはちょうどになります。コントローラやモデルを別のプロジェクトに移動して、アプリケーションに合ったものにすることができます。おそらく3つのコントローラーを備えた小さなアプリケーションの場合、モデルレイヤーにEFやLINQデータモデルを加えたクラスが2つ追加されていても、異なるプロジェクトへの分離を正当化するのに十分なファイルがありません。

2

私の誕生日のケーキにはレイヤーがありましたが、まだ大きなケーキでした...そうですか?

2

もちろんあります!

私は両方のビューとコントローラにユーザーインターフェイスロジックが含まれていると思います...ビジネスロジックはモデル(DALだけではありません)になければなりません。

モデルとしては、たとえば次のように使用できます。 CSLA objectsを追加し、必要に応じて別の数の物理レイヤーを追加します(構成による)。あなたが(ティア対または層)は、論理と物理層の間の違いがあります知っている必要が

...

このトピックに関するlhotkaのサイトに興味深い記事がたくさんあります!
など。 this oneおよびthis one

0

レイヤーとティアは互換性があります。 n層のコンテキストでは、プレゼンテーション層と呼んでいますが、階層化されたアプリケーションのコンテキストでは、プレゼンテーション層と呼んでいます。しかし、実際には同じことです。

n層アプリケーションと緩やかな結合のリトマステストは、各階層を個別のプロジェクトとして構築し、別々のマシンに展開できるかどうかによって異なります。

n層アプリケーションの主要な差別化要因は、分離問題(SoC)と低結合です。本当に分離されたアプリケーションは、純粋なHTMLだけを含んでいる層を持つアプリケーションです。純粋なJavascriptを含み、AJAXを使用してDOMを更新し、Webサービスと通信する別のもの。 Webサービスは、それ自身の層群で構成されています。

Webサービスには、リクエストを異なるコントローラにルーティングするルーティングエンジンがあります。コントローラーは、要求をサニタイズして解釈し、認証を確認し、何をしていないかを確認し、適切なモデルを呼び出します。モデルは順番にPOCOオブジェクトまたはDTOを返し、それらをDOMに注入するJavascriptに戻す必要があります。 Javascriptはオブジェクトを変更し、それらをデータベースに永続化するために送り返すことができます。エンティティフレームワーク4。0はちょうどそのようなn-tier scenariosのための良いサポートを持っていますが、それはSoC部門で少し短くなりますが(例えば強くタイプするビュー)、より多くの目的には実用的です。

MVC未処理のInversion of Control(IoC)コンテナをすぐにサポートしていると思いますが、現在、疎結合と本当にn層のシナリオが必要な場合は、おそらく選択したIoCコンテナを使用する必要があります。

3

私はビジネスロジックとしてコントローラを考えていません。それらはアプリケーションロジックであり、ビジネスロジック(Model)とプレゼンテーションロジック(View)を結びつける接着剤です。

+0

あなたはビジネスロジック(ビジネスプロセスのような)がモデルの一部ではないと思いませんか?モデルはビジネスプロセスのデータストアにすぎません... –

+0

しかし、コントローラについてはあなたが正しいです。それらは実際のビジネスプロセスロジックではありません。彼らはただ彼らに仕えるだけです。私は、コントローラとモデルを実際のビジネス層に接着する「プロセス」という別々の部分があるべきだと思います。 –

0

「層」は通常、異なる物理サーバーを指し、「層」は機能の疎結合域への分離を指します。

、3層Webアプリケーションである: ティア1)DBサーバ 層2)ウェブサーバー 層3)クライアントブラウザ

3層Webアプリケーション: レイヤ1)UI レイヤ2 )ビジネスロジック レイヤ3)データアクセス

+0

「FORTRANをどんな言語で書いてもいいですが」という質問に本当に答えるかどうかはわかりませんが、MVCは正しい方向にあなたをちょっと振りかざしています。 –

+1

@mgroves:質問者が2つの用語を混ぜているように見えるので、この質問には非常に関連があると思います。 (私の答えとこのトピックに関するリンクも見てください) – fretje

関連する問題