私は現在、コンピューター サイエンスの学位の最終年度に向けて勉強しており、最終的なプロジェクトと論文に取り組んでいます。ASP.NET Web フォームと C# を使用して 3 層プロジェクトを作成します。これを 3 層と呼ぶことはできません。これは、テスト用のローカル PC 以外でホストされることはほとんどないためです。単一の目的のみ。
私の主な質問はこれです:
私の理解では、3 層の考え方は、BLL が DAL を参照し、UI が BLL を参照して、懸念事項を完全に分離することです。ただし、いくつかのチュートリアルに従って小さなモックアップ プロジェクトを作成したので、3 層のコツをつかみます。ほとんどの基本的なチュートリアルでは、UI と BLL の間の参照が必要です。
たとえば、私が作成したプロジェクトは、非常に基本的な製品とカテゴリ タイプの e コマース システムで、DAL に Product クラスと ProductDAL クラスを作成し、次に BLL に ProductBLL クラスを作成しました。1 つのデータベース テーブルのみを使用するこのセットアップでは (今のところカテゴリは忘れてください)、BLL は UI と DAL の間の一種のインターフェイスとしてのみ機能するように見えます。メソッドは DAL のものとまったく同じで、DAL を呼び出すだけです。バージョン。
問題は、BLL 経由で DAL にアクセスするには、Product オブジェクトを BLL メソッドの引数に渡す必要があることです。これは、最初に UI で Product オブジェクトを作成することを意味し、UI から DAL を参照することを意味します。これは正しいやり方ですか?
このような単純なケースを回避するには、適切なフィールド (文字列や int など) を受け取って製品オブジェクトを作成し、それを AddProduct メソッドに返すメソッドを BLL で作成します。ただし、UI でさまざまな製品属性をラベルにバインドする場合は、やはり Product オブジェクトにアクセスする必要があります。
基本的に、製品オブジェクトのプロパティにアクセスするには、BLL でメソッドをロードする必要がありますか? そうでない場合、実際にどのようなメソッドがそこに入るのですか? この種の製品シナリオで BLL に入る可能性のあるメソッドの例を教えてください。
事前に感謝します。これが以前に尋ねられた場合はお詫び申し上げます。私は 3 層アーキテクチャに関する多くの投稿を読みましたが、ほとんどは非常に基本的なもので、1 つのテーブルにしかアクセスできません。