2

現在、私の Web サイトには、仕様パターンを含むリポジトリ パターンがあります。ほんの数行のコードで、.aspx ページ内からデータを取得できます。次に例を示します。

private IRepository repository;

    protected void Page_Load(object sender, EventArgs e)
    {
        repository = new GenericRepository();

        Specification<Book> specification = new Specification<Book>(b => b.Year == 1988);
        lvBooks.DataSource = repository.GetAll<Book>(specification);
        lvBooks.DataBind();
    }

私の質問は、私の Web サイトにビジネス層が必要ですか? 答えが「はい」の場合、その理由は? 現時点では、仕様パターンのために、ページとリポジトリの間にあるビジネス層は必要ないようです。

ご意見ありがとうございます。

4

2 に答える 2

3

答えは、このアプリケーションの大きさ、取得する大きさ、および変更される可能性のある量によって異なります。

レイヤーの唯一の本当のポイントは、機能を分離することです。小さなアプリケーションでは、リポジトリへの呼び出しをUIコード全体に散らばらせることができます。

しかし、リポジトリの構造を変更するとどうなるでしょうか。これらすべての参照を見つけて変更する必要があります。

ただし、より高いレベルのメソッドをUIに公開するビジネスレイヤーですべてのリポジトリアクセスコードを記述した場合、この時点で行う作業ははるかに少なくなります。

特定のセキュリティ上の考慮事項がある可能性があります。たとえば、UIにリポジトリへのアクセス権がない場合は、すべてのセキュリティチェックをビジネスレイヤーのパブリックAPIに集中させることができます。リポジトリにどこからでもアクセスできる200ページのWebアプリがある場合、もちろん安全である可能性がありますが、どの程度確実にできますか?

次に、単体テストがあります......基本的に正しい方法はありませんが、アプリが小さい場合は問題ありません...アプリが大きい場合は、ある時点でこの設計を後悔する可能性があります。

于 2011-08-12T11:38:59.080 に答える
1

あなたのコードから、ビジネスレイヤーは必要ないようです。単純な仕様またはデータ挿入を使用したデータ取得がすべてのようです。これらのオブジェクトに関するいくつかのビジネス ルールがある場合、BL が必要になります。

于 2011-08-12T11:19:29.603 に答える