2013-02-07 12 views
5

MVC4 webapp + EntityFramwork5の3層アーキテクチャを開発しました。 私はレイヤーをsepareteにしておきたいので、例えばDALだけが私がEFを使っていることを知っています。ASP.NET MVC4 n-Tierアーキテクチャ:ベスト・アプローチ

実際に私はそれを管理するためのクラスがたくさんある:

DAL

  1. エンティティPOCO
  2. エンティティのDataContext:DbContext
  3. エンティティリポジトリ

BL

  1. エンティティのViewModel
  2. エンティティサービス(エンティティリポジトリをインスタンス化)

WEB

  1. エンティティコントローラ(エンティティサービスをインスタンス化)

これは仕事ですmantainはかなり難しいです。私はDALでエンティティリポジトリを削除し、DataContextを直接使用することを考えていました(すべてのDbContextがリポジトリと作業ユニットになると間違っていない場合)が、私のBLのEntityFramework.dll。大きな問題ではありませんが、それが最良の選択であるかどうかはわかりません。

アドバイスはありますか?

(あなたがより多くを必要とする場合、私はちょうど聞いて、私は十分な情報を与えた願っています)

+0

私はそれがあなたのプロジェクトを維持するのは難しいと言います。どのレイヤーを維持するのが難しいと思いますか? –

+0

例えば、私がPOCOにフィールドを追加すると、datacontext(必ずしもそうではない)、dalリポジトリ、BLビューモデル、BLサービスなどを更新する必要があります。この構造(または設計エラー) – Davide

+1

こんにちは@Davide、あなたも同様にプロジェクトのためのいくつかのGOFデザインパターンを適用することができます。たとえば、POCOにフィールドを追加することができれば、 "Builder"パターンを使用することができます:)。 –

答えて

5

あなたはthisthisthis品を使用することができます。

An experienced Architect does not need to go through every single step in the book to get a reasonable design done for a small web 

アプリケーション。このようなアーキテクトは経験を活かして プロセスを高速化できます。私は前に似たようなWebアプリケーションを作っていて、 が私の成果物を理解していたので、私はより高速なアプローチを取って に行きました。それはうまくいけば この記事の長さを短縮するために私を助けるでしょう。

For those who do not have experience, let me briefly mention the general steps that involved in architecturing a software below... 

Understand the initial customer requirement - Ask questions and do research to further elaborate the requirement 
Define the process flow of the system preferably in visual (diagram) form. I usually draw a process-flow diagram here. In my 

努力は、私が 最初のシステムの手動バージョンを定義しようとすると、その後のプロセスとそれらの関係を特定する しながら、自動化されたバージョンにその変換しようとするだろう。このプロセスフロー の図を使用して、お客様にキャプチャされた要件を確認するための媒体として使用することもできます。 要件が完全に取得され、設計が開始される前に定義されている場合、 'Water-Fall'モデルを使用できます。しかし、 の要件が定義されていない場合は、 'Spiral'の変形を使用して を処理することができます。 要件が定義されていない場合、システムは設計中に定義されます。そのような場合は、それぞれのモジュールに適切なスペース( )を確保する必要があります。後で拡張が期待されます。 使用するアーキテクチャを決定します。私の場合は、ドキュメント管理システム(DMS)を設計するために、 ASP.NET MVCとマルチティアアーキテクチャ(3層バリアント)の組み合わせを使用します。 システムを分析し、モジュールまたはサブシステムを識別します。
一度に1つのサブシステムを選択し、それをさらに分析し、システムのその部分に属するすべての細かいレベルの要件を識別します。 データエンティティを認識し、エンティティ間の関係(エンティティリレーションシップダイアグラムまたはERダイアグラム)を定義します。 を入力し、ビジネスエンティティを識別します(一部のビジネスエンティティ はシステムのクラスに直接マッピングされます)。 プロセスフローを定義します。 エンティティを整理しました。ここでデータベースを正規化し、使用するOOPの概念とデザインパターンを決定します など
デザインを一貫性のあるものにします。すべてのモジュールとレイヤーで同じ基準に従ってください。たとえば、 の例として、2つの異なるデザインパターンを2つの異なるモジュールで使用して同じ目標を達成した場合は、より良い アプローチを選択して両方の場所で使用します。 プロジェクト デザインのチューニングは、プロセスの最後の部分です。これを行うには、プロジェクトチームとの会合が必要です。その 会議では、あなたのチームにあなたのデザインを提示し、彼らに について質問する必要があります。これを正直に評価する機会として/ あなたのデザインを調整してください。

+0

これはあなたの最初のリファレンスからの長い引用であり、番号付きリストも含まれていることを明確に述べてください。ありがとう。あなたがリンク専用の答えを出さなかったことはいいことです。 –

関連する問題