私はアーキテクチャにまったく慣れていないので、次の .NET プロジェクト用にアプリケーションを設計しています。私の提案するアーキテクチャ設計は次のとおりです。
これは、以下を含む従来の 3 層アプリケーションです。 DataLayer (LINQ + 部分クラス) BusinessLogicLayer (エンティティ + 検証ロジック) (オプション) Service Layer (WCF) UI (Web サイトおよび Windows アプリ)
データ レイヤー: データ レイヤーには、DataContext クラス (つまり LINQ) と部分クラスが含まれます。これらの部分クラスには、基本的な計算ロジック (Calc. VAT など) とその他のデータベース レベルの検証ロジックがあります。
ビジネス層: これには、データ層と同様のエントリがありますが、UI レベルの検証ロジックも含まれます。たとえば、ユーザーがデータベースに存在しないユーザー名を入力しようとした場合、ユーザーが存在しないことをユーザーに伝える必要があります。(これは私が苦労している場所です)。オブジェクトは、オブジェクトの作成時ではなく、プロパティが呼び出されるたびに遅延ロードされます。
UI: これは、ビジネス エンティティが呼び出される従来の UI レイヤーになります。
LINQ を使用している場合でも DataLayer からビジネス層を分離している理由は、WCF サービスなどの中間層エンティティを追加したい場合は、Data ではなく Business Layer と通信する必要があるためです。アプリケーションが大きくなると、デカップリングが役立つと思います(と思います)。
誰かが上記の行についてコメントできれば幸いです。私の本当の問題は、ビジネスクラスを書くことです(明らかに)。たとえば、オブジェクトをロードしようとしたときの遅延ロードで、データベースにデータがない場合、ユーザーが存在しないことをUIに表示したい(ユーザー名を検索している場合)。これに関してあなたの推奨事項は何ですか。これへの入力は非常に高く評価されます。
どうもありがとう、Preyash