ソリューションのセットアップ:
- DAL (クラス ライブラリ)
- BLL (クラス ライブラリ)
- 共通 (クラス ライブラリ (いくつかの共通機能 - 列挙型、ロギング、例外など))
- アプリケーション 1 (Windows アプリケーション)
- アプリケーション 2 (Windows アプリケーション)
- WebApp (Web アプリケーション)
- ...
次のCustomerエンティティがあるとします。
- SQL サーバーのテーブル
- DAL の CustomerDataTable
- BLL の Customer クラス
- すべてのアプリケーションの BLL.Customer クラス
BLL と DAL はどのような種類のオブジェクトを通信に使用する必要がありますDataTable
かList<Customer>
? (たとえば)? 最初のケースでは、BLL ロジックは Customer オブジェクトを DataTable に変換し、それを DAL に送信する必要があります。2 番目のケースでは、DAL レイヤーは、BLL レイヤーにある Customer クラスを認識する必要があります。しかし、もともとDLLはDALを参照しており、反対ではありません...
すべてのクラスを、他のすべて (Common、BusinessObjects など) から参照される個別のアセンブリに配置する必要がありますか? この場合、すべてのプロジェクトで Customer クラスを使用できます。
1 つの BLL だけが DAL を使用することがわかっている場合でも、わざわざ DAL と BLL を分離する必要があります。この場合、それらを 1 つのプロジェクトにマージできます。
PS - 私は DataTables について読んでいますが、多くの人が DataTables をまったく使用すべきではないと言っています。より良いオプションは何ですか? たぶん、ORMマッピングツールを学ぶ時が来ました:)