n层应用程序,什么去哪里和程序集名称

时间:2012-08-14 04:12:22

标签: .net architecture

我创建了一个项目,我需要在n层应用程序中拆分op(3层)

我从一个项目开始,并开始添加我的所有课程。 FX

public IServiceFoo()
{
  DoIt();
}

public ServiceFoo : IServiceFoo
{
  ...
}

添加了IoC以及所有这些。 开始重构,但碰壁了。 我有4个装配。

  1. 模型/领域
  2. 服务/基础结构
  3. DAL
  4. ASP.NET MVC as view。
  5. 我在哪里粘贴我的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

1 个答案:

答案 0 :(得分:0)

分层规则是依赖关系以一种方式进行,一层只能连接到另外两层(上层和下层)。定义程序集所在的层后,必须确保项目中的引用方式与该规则匹配。较低层不能“引用”较高层。如果您违反这些规则,那么您的类型不在正确的程序集中。

enter image description here

在此图中,BL“连接”到另外两个层,上面的层(UI)和下面的层(DA)。箭头显示UI获取对BL的引用,但BL不引用UI层。与BL和DA相同,BL在DA上引用,但DA不在BL上引用。