web-dev-qa-db-ja.com

多層プロジェクトでは、インターフェイスをどこに定義する必要がありますか?

3つのサブプロジェクト(データアクセスプロジェクト、ビジネスロジックプロジェクト、プレゼンテーションプロジェクト)で構成される多層プロジェクトがあります。インターフェイスはどこで定義する必要がありますか? DALとBLLの両方で定義されたインターフェイスがあるはずだと思います。インターフェイスに基づく「テスト」データを使用してビジネスロジックレイヤーをテストする状況では、おそらく、インターフェース?

これをどのように配置すべきかに関するベストプラクティスまたはアイデアはありますか?

9
John S

これに対する1つの良いアプローチは、階段パターンを使用することです。

enter image description here

したがって、DALは1つのプロジェクトにあり、そのインターフェースは別のプロジェクトにあり、BLLは3番目のプロジェクトにあり、そのインターフェースは4番目のプロジェクトにあります。

たとえば、ビジネスレイヤーをテストするときは、実際のDALやNHibernateなどのすべてをスコープにドラッグしてこれらのインターフェイスを取得するのではなく、DALインターフェイスプロジェクトを参照するだけです。

私の知る限り、このパターンは彼の本のGary McLean Hallによるものです。「 C#によるアダプティブコード:デザインパターンとSOLID原則)によるアジャイルコーディング "

9
David Arno