実際、あなたは伝統的な階層化されたアーキテクチャから少し離れていると思います。通常、アプリケーションが処理するデータのモデルは、それらを操作するコードとともにビジネス レイヤーに保持されます。データ層には、永続化フレームワークのデータ モデルと、そのフレームワークと対話するコードの両方が含まれます。これが、クラスの提案された場所と、コメントに基づくそれに対する反応との間の混乱の原因である可能性があると思います.
その観点からすると、取得または取得するものはすべて、必然的にデータ層に配置されます。つまり、永続ストレージ内のデータにアクセスしています。取得したものは、最終的にビジネス ロジックが動作するビジネス レイヤー オブジェクトに変換されます。ものは、注文表のような概念モデルであるか、またはビジネス アクションがビジネス レイヤーに属します。おそらく、(3) が実際に何であるかに応じてどこに行くかについて同じ混乱がある @Adron に同意します。
すなわち:
- ユーザー設定はビジネス オブジェクトであり、それらを取得するのはデータ レイヤー オブジェクトです。
- 静的データはビジネス オブジェクト (テーブルやビューなど) にマップされます。外部サーバーにアクセスするのはデータ レイヤー オブジェクトです。
- ユーザー資格はビジネス オブジェクトであり、それを取得するのはデータ レイヤー オブジェクトです。
- 注文のテーブルはビジネス オブジェクトです
- 電子メールはビジネス活動であるため、人々にメールを送信することはビジネス オブジェクトです。
[編集] (単純な) Web アプリの一般化された 3 層アーキテクチャ
データ アクセス層
これには、TableAdapter と、厳密に型指定された DataTable および Factory が含まれます。これらは、LINQ 以前のプロジェクトで DataTable の行をビジネス オブジェクトに変換します。LINQ を使用すると、これには DataContext とデザイナーが生成した LINQ エンティティが含まれます。
ビジネスレイヤー
これには、検証やセキュリティなど、あらゆるビジネス ロジックが含まれます。LINQ 以前では、これらはビジネス オブジェクトと、アプリケーションのロジックを実装するその他のクラスでした。LINQ を使用すると、これらはビジネス ロジックを実装するための他のクラスと共にセキュリティと検証を実装するための LINQ エンティティの部分クラス実装です。
プレゼンテーション
これらは私の Web フォームです。基本的にはアプリの UI です。検証ロジックの一部を最適化としてフォームに含めていますが、これらは BL でも検証されています。これには、ユーザー コントロールも含まれます。
注:これは論理構造です。プロジェクト構造は一般的にこれを反映していますが、Web サービスへの接続のように、論理的にはコンポーネントが実際には BL/DAL に含まれていても、Web プロジェクトに直接含まれる場合があります。
注: ASP.NET MVC が運用されたら、おそらく MVC over 3-Tier に移行する予定です。Ruby/Rails でいくつかの個人的なプロジェクトを行ったことがありますが、Web アプリの MVC パラダイムがとても気に入っています。