2

私は多層 MVC アプリケーションを開発しており、これまでに行ったことを確認しています。特に、私が戻って、多層/レイヤー (そこにはたくさんの情報がありますが、実際の一貫性や標準はありません) についてかなりの量を読み直したので、今は自分のデータレイヤーに疑問を抱いています.

私はそれを (良い設計に沿って) 間違って実装したのではないかと強く疑っています。これが私がやったことです:

WebUI

  • コントローラー、ビュー モデル、ビューが含まれます

BLL

  • 以下を含むサービス クラスが含まれます。

    1. コレクションなどのメモリ内操作コード
    2. エンティティへの EF linq などのデータ アクセス コード。

データ

  • ドメイン クラスを含む /Models フォルダー
  • DbContext クラスを含む /DAL フォルダー

...

一歩下がって再検討すると、これが私が見ているものであり、私が疑問に思っていることです:

  1. BLL では、ここで EF コードが正しくないように見えます。データ層にある必要があります。誰か確認してくれませんか?

  2. 私のデータ レイヤー (つまり、データ プロジェクト) には、コンテキスト クラスとドメイン モデルが含まれています。人々がデータ層を a) DAL と b) モデルに分けているのを読んだことがあります。したがって、DAL レイヤーにはコンテキスト クラスとデータ (EF) コードが含まれ、モデル レイヤーにはドメイン モデルのみが含まれると思います。これにより、合計 4 つのレイヤーが作成されます。過剰すぎるか、良いデザインですか?

  3. EF から ViewModel へのマッピングに AutoMapper を使用する場所はありますか? 私は現在、Web レイヤーでマッピングしていますが、BLL の方が適切であると思われます。ドロップダウン リストの SelectListItem など、一部のマッピングは Web レイヤーでのみ実行できます。

4

2 に答える 2

1

よく読んで、この記事はそこにある多くの情報と一致しており、私の質問のほとんどに答えています。

http://www.kenneth-truyers.net/2013/05/12/the-n-layer-myth-and-basic-dependency-injection/

  1. EF コードは、BLL ではなく、DAL にある必要があります。

  2. モデルを (DAL から) 移動し、独自のアセンブリに移動しました。これで、データ レイヤーには、DAL とモデルの 2 つのアセンブリがあります。これは個人の好みによるかもしれません。また、Web レイヤーには、DAL ではなくモデル アセンブリのみへの参照が必要です。

  3. Web レイヤーと BLL レイヤーの両方にマッピングがあるのではないかと思います。まだ確認していませんが、これにたどり着いたとき。

誰かがより良い、より詳細な回答を持っている場合は、喜んでそれに応じます。それ以外の場合、この記事は多くのレイヤー関連の質問に回答しているようです。

于 2014-03-07T03:26:57.167 に答える
1

ORM (特にコード ファースト アプローチ) を使用すると、個別の DAL プロジェクトが本当に面倒になると思います (真剣に、ORM の DA 部分は、純粋な ADO.NET DataReader と比較して何もありません)。代わりに、データの永続性Prj.Domainに関するものを作成することを好みます。基本的には+レイヤーまたはあなたのレイヤーを組み合わせたものです。DALModel

ビューでドメイン データを処理するためのPrj.WebUI便利な方法としてのみ使用される独自のモデル (ViewModel という名前の方が適切です) があります。

MVC の観点からPrj.Domainは、モデルでありPrj.WebUI、ビューとコントローラーです。

于 2014-03-07T06:58:49.630 に答える