我创建了一个项目,我需要在n层应用程序中拆分op(3层)
我从一个项目开始,并开始添加我的所有课程。 FX
public IServiceFoo()
{
DoIt();
}
public ServiceFoo : IServiceFoo
{
...
}
添加了IoC以及所有这些。 开始重构,但碰壁了。 我有4个装配。
我在哪里粘贴我的IServiceFoo界面? 唯一合理的地方是在域/模型程序集中,因为所有其他项目都知道on,因此可以使用跨越应用程序。
我是否打电话给我的程序集:Model的域instad,因为它不再仅仅是模型?
服务也一样吗?这更像是一个基础设施,因为它构成了服务类和计算逻辑。
希望你能帮忙吗? 谢谢。
- 编辑 - 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
答案 0 :(得分:0)
分层规则是依赖关系以一种方式进行,一层只能连接到另外两层(上层和下层)。定义程序集所在的层后,必须确保项目中的引用方式与该规则匹配。较低层不能“引用”较高层。如果您违反这些规则,那么您的类型不在正确的程序集中。
在此图中,BL“连接”到另外两个层,上面的层(UI)和下面的层(DA)。箭头显示UI获取对BL的引用,但BL不引用UI层。与BL和DA相同,BL在DA上引用,但DA不在BL上引用。