通过DI和Unity分离层将违反N层中的层分离

时间:2012-08-15 07:20:38

标签: c#-4.0 architecture dependency-injection unity-container n-tier-architecture

这是一个新手问题,我正在使用DI通过配置在运行时解析接口的对象。

<unity>
  <containers>
    <container>
      <types>
        <type
          type="BusinessLayer.IBAL, BusinessLayer, Version=1.0.0.0, Culture=neutral"
          mapTo="BusinessLayer.BAL, BusinessLayer, Version=1.0.0.0, Culture=neutral" />
        <type
          type="DataAccessLayer.IDAL, DataAccessLayer"
          mapTo="DataAccessLayer.DAL, DataAccessLayer, Version=1.0.0.0, Culture=neutral" />
        <type
          type="DataAccessLayer.IDbContext, DataAccessLayer, Version=1.0.0.0, Culture=neutral"
          mapTo="DataAccessLayer.DbContext, DataAccessLayer, Version=1.0.0.0, Culture=neutral" />
      </types>
    </container>
  </containers>
</unity>

以上配置在UI层web.config中。

指定在UI层web.config中创建哪个DAL实例是否违反图层分离概念?

由于所有图层都应该是独立的......如果在UI层中提到DAL,BAL依赖关系web.config会违反分离原则吗?

1 个答案:

答案 0 :(得分:4)

你需要在某个地方引导你的容器。在某个Web应用程序中,某个地方通常是主要的Web项目。如果您使用的是n层架构,那么(希望)不会直接从您的UI中使用您的DAL类,而是从您的BL类中使用。

只需在web.config中引用您的DAL类,就不会违反分层体系结构。

您可能需要阅读concept of Composition Roots上的这篇文章以获得进一步的解释。