0

n層アプリケーション(3層)でopを分割する必要があるプロジェクトを作成しました

私は 1 つのプロジェクトから始めて、すべてのクラスを追加しました。FX

public IServiceFoo()
{
  DoIt();
}

public ServiceFoo : IServiceFoo
{
  ...
}

IoC などを追加しました。リファクタリングを開始しましたが、壁にぶつかりました。私は4つのアセンブリを持っています。

  1. モデル/ドメイン
  2. サービス・インフラ
  3. ダル
  4. ビューとしての ASP.NET MVC。

IServiceFoo インターフェースをどこに貼ればいいですか?? 唯一の論理的な場所は、ドメイン/モデル アセンブリにあります。これは、他のすべてのプロジェクトがそれを認識しているため、アプリケーションを横断して使用できるためです。

モデルだけではないため、アセンブリをモデルの代わりにドメインと呼びますか?

同じことがサービスにも当てはまりますか?これは、Service クラスと計算ロジックが含まれているため、よりインフラストラクチャです。

あなたが助けてくれることを願っていますか?どうも。

-- 編集 - 08142012 -- 私のソリューション ドメイン: 教育と建築のより良いノウハウのための店。

Solution (a 3 layers application :D then!)
  DAL - assembly (only pulls data up and save data)
    - ProductDAL : IProductDal
    - GroupDAL : IGroupDAL
    - UserDAL : IUserDAL

  Service - assembly
    - ProductService : IProductService (calculate products, load product by DAL)
    - GroupService : IGroupService (do some stuff with group, maybe delete group in list with no product)
    - UserService : IUserService (validate if a user can login, load user by dal, check password)
  Models - assembly
    - Product
    - Group
    - User
- Webshop - assembly (ASP.NET MVC) (with all the viewmodel and models, UI Helpers)
          Using DI/IoC as the glue, that sticks it all to getter.

また、ウェブショップはすべてのアセンブリを参照します。サービス層と dal 層は、インターフェースを除いて、お互いを認識しています。

Service と DAL のインターフェイスに最適な場所はどこですか? これが役立つことを願っています:S

4

1 に答える 1

0

階層化のルールでは、依存関係は一方向に進み、1つのレイヤーは他の2つのレイヤー(上のレイヤーと下のレイヤー)にのみ接続できます。アセンブリを配置するレイヤーを定義したら、プロジェクトでアセンブリがどのように参照されるかがそのルールに一致することを確認する必要があります。下位層は上位層を「参照」できません。これらのルールに違反すると、タイプが適切なアセンブリに含まれなくなります。

ここに画像の説明を入力してください

この図では、BLは他の2つのレイヤー、つまり上のレイヤー(UI)と下のレイヤー(DA)に「接続」しています。矢印は、UIがBLへの参照を取得するが、BLはUIレイヤーへの参照を取得しないことを示しています。BLおよびDAと同様に、BLはDAを参照しますが、DAはBLを参照しません。

于 2012-08-14T04:43:22.297 に答える