2011-11-04 135 views
3

我正在閱讀StructureMap關於依賴注入,以及有兩個部分首先初始化映射,接口具體類類型,另一個只是實例化(要求實例)。應用程序引導

第一部分需要配置,設置提到要在引導過濾器中完成。

啓動過濾器的最佳做法是什麼?靜態類與靜態構造函數?在IIS中怎麼樣?

此外,我如何配置結構圖,以便不重新啓動應用程序,我可以更改依賴關係?那可能嗎?怎麼樣?

+0

你是什麼意思?*怎麼樣的IIS?*答案完全取決於使用的框架(Web窗體,MVC,WCF等),而不是服務器本身。 –

回答

2

該配置在Composition Root中完成。對ASP.NET WebForms的IoC容器支持非常糟糕。這些頁面由IIS創建。這裏唯一可以做的是在頁面創建後注入屬性。

如果你想爲網站做DI,那麼你應該使用MVC 3而不是WebForms。在這種情況下,會有一個集成包Structuremap.MVC3爲您執行引導。你可以在nuget上找到它。 https://github.com/webadvanced/Structuremap-MVC3

1

對靜態構造函數使用靜態類沒有多大幫助,因爲只有在運行代碼實際使用該類之前,靜態構造函數纔會被調用。因此,您最好的選擇是在程序的main()方法中引導DI。

在IIS或類似環境中,通常會在應用程序/加載項/組件被加載或「啓動」時觸發事件。在ASP.NET(即IIS)中,global.asax.cs文件中的全局應用程序事件用於此目的。

+0

如果您使用的是自定義處理程序而您沒有使用gloabal.asax.cs,該怎麼辦?然後? – DarthVader

+0

只要你有一個ASP.NET,總是至少有'Application_Start'事件被調用。請參閱http://msdn.microsoft.com/en-us/library/ms178473.aspx。 –

+0

假設我有一個Web客戶端,一個Windows客戶端和一個單元測試客戶端。最佳做法是在每個應用程序中創建一個「IoC配置」類,用於連接特定應用程序的映射。謝謝,只是試圖把我的頭圍繞它....有點新的迪 – toddmo