1

4 つのアセンブリがあります。UserInterface、BusinessLogic、DataAccess、Common。

ユーザー インターフェイスは DataAccess にあるリポジトリを参照しますが、それは悪い習慣ですか? UserInterface が DA アセンブリに結合されないように、BusinessLogic でパススルー メソッドを作成する必要がありますか?

BusinessLogic メソッドが関連する Repository メソッドを呼び出すだけの場合でも?

それとも私はペンダントですか?

4

4 に答える 4

2

UIがリポジトリと通信することを考えるのではなく、抽象化に依存する実装を考えてください。この場合、UIはに依存しIRepositoryます。どのようIRepositoryに実装するかは重要ではありません。

そして、これをすべて別々のアセンブリに入れるのはやり過ぎです。名前空間を使用してコードを分離するだけです。メンテナンスがはるかに簡単になります。

于 2012-07-05T20:08:09.703 に答える
1

レイヤーが不足していると思います。エンティティ層またはデータ転送層。

それは間違いなく良い習慣ではありません。UIはあなたのDALについて何も知らなければなりません。それがあなたがあなたのビジネスレイヤーを持っている理由です。

データ転送オブジェクトを使用して、UI-BL-DALとそれ以降は同じである必要があります。

これらのレイヤー間で常にDTOを使用して、オブジェクトをUIからBLに、BLからDALに、そしてその逆に転送します。

于 2012-07-05T20:06:51.110 に答える
1

ドメイン駆動設計を行おうとしている場合は、UI での使用を考える前に、リポジトリの役割を理解してください。ここで非常に素晴らしい説明http://devlicio.us/blogs/casey/archive/2009/02/20/ddd-the-repository-pattern.aspx

于 2012-07-05T19:57:45.863 に答える
0

階層構造の主な理由は「関心の分離」だと思います。SoC は基本的に疎結合で提供されます。だからDALでUIを参照するのはよくない。

一方、UI はユーザー インタラクションを処理する必要があります (DAL から直接呼び出すのではありません)。BL は検証を処理し、DAL メソッドを呼び出す必要があります。DAL は最後のステップであり、SQL の側面に従ってデータを検証し、SQL ステートメントを処理できます。

于 2012-07-05T20:00:55.203 に答える