2

我想第一次使用結構圖。我之前使用過ioc容器,但總是使用xml配置。由於結構圖通過代碼使用配置(我知道它也可以在xml中完成,但大多數示例都是通過代碼使用配置)我遇到了引用的一些問題。結構圖和參考文獻,什麼是最佳實踐?

讓我們通過下面的例子(沒有真實的)工作:

3組件。

數據層 BusinessLayer 服務

的BusinessLayer引用數據層(所以它可以檢索數據) 無論是數據層和BusinessLayer引用服務組件,因爲它包含的代碼記錄。

我想日誌組件由StructureMap進行管理,以便我可以改變日誌組件。

在業務層也有通過StructureMap所服務的一些組件。

所以我的問題是現在。

我在哪裏可以放置結構圖配置?

如果我把它放在了BusinessLayer,數據層不能使用日誌組件(因爲引用回業務層將在一個循環引用解決)。我不能把它放在Services項目中,因爲BusinessLayer中也有一些組件(業務層有對服務組件的引用)。

我希望我已經解釋自己不夠好。這裏的主要問題是StructureMap在配置之前需要對程序集的引用,我發現它有點問題。我做錯了什麼嗎?

回答

3

該容器構造有在頂層,在表示層:網站,web服務,控制檯應用程序,應用程序窗口或窗口服務。所以你可以注入你需要的任何地方。

+0

合理的建議,但如果我有多個「頂層」呢?例如。在我的項目中,我都有一些在SharePoint中運行的工作流(沒有UI)和一些Web項目(它是一個共享點項目)。 – user392471 2010-07-15 09:09:19

+0

它依賴於這些工作流程的運行方式。您可能需要的不僅僅是一個容器。我有一個包含一些Web服務的Web項目。我有一個Web應用程序容器和兩個Web服務容器。這些容器是兒童(Unity允許兒童容器,我不知道StructrureMap)包含常見事物(記錄等)的常見容器。 – onof 2010-07-15 09:17:21

+1

好的謝謝。我想我的「主要」問題中的一個隱含問題是,如果多個容器「很好」。我總是可以使用寄存器來包含通用配置。 – user392471 2010-07-15 09:49:33

0

我置於在過程級的自舉方法編程配置(IoC的或任何其他)。因此,在客戶機/服務器系統中,客戶機進程將擁有它自己的引導程序,以用於它需要的任何配置,並且服務器進程將爲它需要的任何配置提供單獨的引導方法(這可能是重用的代碼,或者它們可能是非常不同的要求)。 例如,客戶機引導程序不需要知道DAL配置,服務器引導程序不需要知道任何UI配置。