8

私は DAL/BLL の概念を使用したことのない Classic ASP に慣れていましたが、現在は MVC を学習しており、悪い習慣 (ASP ページ自体に SQL クエリを記述するなど) から離れようとしています。Data Access Layer と Business Logic Layer について読みました....それらは理にかなっていますが、現在のアプリケーションにそれらを組み込む方法を理解しようとしています。

そのショッピング カート アプリケーションです。

現在、関数が DataTable を返す、単純な古い ADO.NET エンティティに EF または SQL を使用していません。

例を挙げましょう。

1 - I need to Return Products From SQL Table 
2 - My Products Model Class will hold the SQL Table output 
3 - and then I will show the output to View

製品の持ち込みに関連するクエリ

Select *  From Products Where title = 'Bluh'

ProductsModelView.vb

Class ProductsModelView

 Public title as string
 Public sku as string
 ....etc
End Class

これで、ビューは (List(ProductsModelView) の) 結果を単純にレンダリングします。

今私の質問は...上記のステップをDALおよびBALレイヤーにどのように構造化する必要があるかです。

4

1 に答える 1

19

基本的な開始方法は、3 つのプロジェクトを作成することです。

  • DAL プロジェクト
  • BLL プロジェクト
  • UI プロジェクト (MVC アプリ)

DAL プロジェクトでrepository-class を作成する必要があります。このクラスが行うことは、データベースでクエリを実行し、DataTable をモデルに変換することです。

BLL プロジェクトにはservice-class が必要です。このクラスは DAL への参照を持ち、メソッドを呼び出して必要なオブジェクトのリストを取得します (DAL は DB コードを処理します)。このクラスでは、ロジックを適用できます。注: 現時点では、アプリに実際のロジックがないようです。これで問題ありません。サービスは DAL からリストをすぐに返すことができます。これにより、データ アクセス コードに影響を与えることなく、後で安全にロジックを追加できる場所が提供されます。

UI では、コントローラーがサービスを呼び出して結果をビューに渡します。ビューは結果のレンダリングを担当します。

これが基本的な出発点です。これをさらに進めて、完全に疎結合にすることができます。現時点では、UI => BLL => DAL からの強い依存関係がまだあります。

私は最近、ハードな依存関係を作成しないようにする方法に関する記事を書きました: http://www.kenneth-truyers.net/2013/05/12/the-n-layer-myth-and-basic-dependency -注入/

于 2013-05-28T23:06:58.027 に答える