2

3つの層(名前空間を含む)があるとします。

  • ユーザーインターフェイス(App.UI)-ビジネスレイヤープロセスを呼び出し、オブジェクトを使用して通信します
  • ビジネスレイヤー(App.Core)-プロセスを調整し、オブジェクトを使用してDALレイヤーを使用します
  • DAL(App.Data)-ストアを直接操作し、オブジェクトを永続化します

Userテーブルがあり、DALレイヤーに反映されているとしましょApp.Data.UserApp.Data.Users

UIには、アプリケーションユーザーを表示するビューがあります。

分離された(階層化された)アプリケーションを実際に作成するには、アプリケーションも用意する必要がApp.Core.UserありApp.Core.Users、おそらく手動で作成する必要があります。

もちろん、(私の意見では)最善の解決策は次のようになります。クラスと。を含む第4層のBusiness Objects(App.Objectsが必要です。これらのPOCOは、すべてのレイヤーで共有されます。ビジネスレイヤーはDALの使用のみが許可され、UIはBLの使用のみが許可されますが、それらはすべて共通のオブジェクトモデルに使用されます。App.Objects.UserApp.Objects.UsersApp.Objects

Asp.net MVCテンプレートは、ビューで直接DALオブジェクトを使用することを意味します。LINQ2エンティティは、POCO自体も作成しません...

では、自動コード生成を使用する場合、DALオブジェクトを使用するのか、それとも共有POCOを手動でハードコーディングするのでしょうか。最初の部分は簡単な方法のように見えますが、 DALをUIから分離していません(後でセキュリティとスケーラビリティの問題が発生する可能性があります)。2番目の部分はエラーが発生しやすく、中規模のデータベースでは非常に面倒です。

あなたは何を提案しますか?

4

1 に答える 1

1

App.Objects と呼ぶものは、基本的にドメイン モデルであり、データを渡すためにすべてのレイヤー間で共有することは論理的ですが、このモデルが貧血かアクティブかを決定する必要があります。

于 2009-06-03T10:05:57.207 に答える