n層アプリケーション(3層)でopを分割する必要があるプロジェクトを作成しました
私は 1 つのプロジェクトから始めて、すべてのクラスを追加しました。FX
public IServiceFoo()
{
DoIt();
}
public ServiceFoo : IServiceFoo
{
...
}
IoC などを追加しました。リファクタリングを開始しましたが、壁にぶつかりました。私は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