2012-01-30 7 views
14

単一のプロジェクトソリューションでは、多くのコントローラーを使用している場合に領域を分けて、分離を改善し、モジュールをソリューションの内外に簡単にコピーすることができます。しかし、大規模なエンタープライズソリューションでは、ロジックを別々のプロジェクトに分割することをお勧めします。MVCエンタープライズの分野 - 良いか悪い?

したがって、UI、コントローラ、SOA、モデル、リポジトリのプロジェクトが別々になります。このシナリオでは、領域はそれ以上意味をなさないでしょうし、コントローラには一意ではなく、そうではない場合はUrl内の領域を省略することができますが、しばしば必要とされないUrlにトップレベルを追加しますそれは少し臭い?

おそらく、中規模の複雑なサイトや、モジュールコードをある場所に保存して他のサイトにコピーしたり削除したりするのに適しています。

+1

おそらくこれは興味深いかもしれません:http://stackoverflow.com/questions/6656843/how-to-reuse-areas-controllers-views-models-routes-in-multiple-apps-or-websi。コードを複数のプロジェクトに分けることができます。 –

+0

あなたが探しているのは、携帯用の領域で、通常の領域ではないと思います。 –

答えて

13

これは正しい質問かどうかわかりません。エリアは小規模なプロジェクトでは過度のものになることがありますが、クラスを整理しておくのに役立つエリアを使用しない大規模ではないプロジェクトは想像するのが難しいです。

は、私は、企業のためのMVCエリアを使用して、それについてのいくつかのことが大好き:

  1. は、一般的に、人々が(例えば、検索、チェックアウトなど)特定のドメイン内の特徴に取り組んでいるが。地域名がビジネスドメインに対応する場合、MVCエリアは、関連するクラスを簡単に見つけることができるため、フィーチャの実装にかかる時間を短縮します。
  2. MVCルーティングは、どのようにURLをどのように構造化するかについて、柔軟性を提供します。私はAction Controller "pattern"を使用していましたが、一般公開されていないURLの場合は、エリアのデフォルトルートを完全に受け入れています。
  3. エリアは、スタイリングの明確な利点をもたらします。さらに重要なことは、サイトセクションレベルでのカプセル化動作をにすることです。各エリアは、独自のWeb設定を取得して、ベースビューページを制御したり、管理対象ハンドラを追加することができます。

あなたはサービスが複数のクライアントが共通のビジネス機能にアクセスできる環境では、別々のプロジェクト/ソリューション全体で、リポジトリ経由でその抽象データアクセスでなければならないことを絶対的に正しいです。

しかし、MVCエリアは、Webプロジェクトが成長するにつれてUI /ルーティングの混乱に対して何らかの命令を提供するのに優れています。コンテキストに関係なく、私にとっては非常に貴重です。

+0

+1、エリアが有用な理由の優れた概要。 – kprobst

1

まず、私はこれが私の意見であり、主にモデルに関するものです。

私はそれを見ていると、領域がちょっと邪悪になることがあります。多くの領域がある場合、ソリューションエクスプローラは迷路になり、何かを見つけるのが難しくなります。

ソリューション内に新しいライブラリプロジェクトを作成し、そこにロジックを配置することをお勧めします。

あなたのアプリケーションがはるかにモジュール化されるという利点があります。ライブラリーを作成してASP.NET MVCアプリケーションでそのライブラリーの参照を指定すると、は容易に間違いを犯し、ロジックにUIを関与させることはできません。

関連する問題