0

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

我从一个项目开始,然后开始添加我所有的课程。外汇

public IServiceFoo()
{
  DoIt();
}

public ServiceFoo : IServiceFoo
{
  ...
}

添加了 IoC 和所有这些。开始重构,但碰壁了。我有 4 个组件。

  1. 型号/领域
  2. 服务/基础设施
  3. 达尔
  4. ASP.NET MVC 作为视图。

我在哪里粘贴我的 IServiceFoo 接口?唯一合乎逻辑的位置是在域/模型程序集中,因为所有其他项目都知道这一点,因此可以跨应用程序使用。

我是否调用我的程序集:模型的域 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

4

1 回答 1

0

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

在此处输入图像描述

在此图中,BL“连接”到另外两个层,即上层 (UI) 和下层 (DA)。箭头表示 UI 引用了 BL,但 BL 没有引用 UI 层。与 BL 和 DA 相同,BL 对 DA 进行引用,但 DA 不对 BL 进行引用。

于 2012-08-14T04:43:22.297 回答