2011-01-11 73 views
0

我從ASP.NET MVC開始,並試圖同時學習DI和依賴倒置。我正在設置MVC項目,其中控制器和視圖駐留在一個程序集中,而且我還爲大多數實際業務邏輯提供了多個用於域模型和服務的程序集。依賴反轉 - 接口的所有者?

該計劃是讓我所有的服務都實現接口。調用服務的控制器通過這些接口訪問它們。實例化是使用Ninject DI框架完成的。

現在的實際問題;誰擁有「接口」?根據我對依賴性反轉的理解,服務接口將由控制器擁有,因此駐留在該組件中。

+0

爲什麼不使用單獨的程序集來「擴展」來包含接口? – 2011-01-11 17:35:25

+0

可能的重複:http://stackoverflow.com/questions/1731515/dependency-injection-who-owns-the-interface – 2011-01-11 17:43:04

+0

Duplicate:http://stackoverflow.com/questions/2401466/how-to-structure-interfaces- in-application-directory-hierarchy – 2011-01-11 17:44:39

回答

0

無有自己的接口。良好的接口是他們自己的動物 - 它們只需要對控制器和服務都可見。

物理隔離他們creates headaches that may be unnecessary - 我建議你不要沒有很好的理由使用多個程序集。

0

接口必須對實現者可見。實施可能對消費者可見。如果您想將實現與接口分開,以便可以分開部署,那麼接口應該駐留在它們自己的程序集中。

如果您嚴格遵守命名空間來組織您的代碼,並且沒有特殊的部署要求,那麼接口可以與實現位於同一個程序集中。

0

服務接口(通常提供數據並實現爲WCF)需要駐留在單獨的DLL上,並且MVC將提供一個引用。

因此,這裏的類和接口的典型(和基本)分裂成項目(和組件):

  • 常見
  • 實體(參考公用)
  • 服務接口(參考通用和實體)
  • 服務實現(參考以上所有)
  • 演示文稿(參考所有上面但實現)並具有WCF procies,查看特定邏輯
  • MVC項目(以上全部引用,但試行)的組件