1

這是一個新手問題,我使用DI通過配置在運行時解析接口的對象。通過DI和Unity進行圖層分離是否會在N層分離圖層

<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層web.config中提到DAL,BAL依賴關係會違反分離原則嗎?

+0

防止將完整的DI註冊放入XML配置文件中。爲了可維護性,在代碼中配置容器有更好的結果。 – Steven 2012-08-15 11:31:13

回答

4

您需要在某處引導您的容器。在某個地方通常是主要的網絡項目的網絡應用程序。如果您使用的是n層體系結構,您(希望)不會直接從您的UI中使用DAL類,而是從您的BL類中使用DAL類。

只需在web.config中引用您的DAL類不會違反分層體系結構。

您可能需要閱讀concept of Composition Roots上的這篇文章以獲得進一步解釋。