2008-09-12 37 views
3

參加IoC最近的一個Alt.NET組後,我開始考慮可用的工具以及它們如何工作。 StructureMap特別使用屬性和引導程序概念將IThing的請求映射到ConcreteThing。對於我來說,屬性會自動拋出標誌,反射或IL注入正在進行。有沒有人知道它的工作原理(對於StructureMap或其他IoC工具)以及相關開銷可能是運行時還是編譯時?與StructureMap等IoC容器相關的開銷成本是多少?

回答

1

對於其他IoC工具包,我不能多說,但我使用Spring.Net,並發現在啓動時會有一次性的初始性能損失。容器配置完成後,應用程序不受影響。

+0

感謝。 ..我其實沒有聽說過Spring.Net,你喜歡它嗎? – 2008-09-12 00:29:11

0

他們主要的問題是代碼變得很難理解。如果過度使用IoC,它可能會變成純粹的神奇。另一個問題是性能。在大多數情況下,性能損失並不明顯。但是當你通過IoC容器開始創建大部分對象時,它可能突然降到海平面以下。

+0

性能損失有多大?你測量了什麼? – Rookian 2010-07-23 20:22:45

1

我使用CastleProject的Windsor,並發現它在減少依賴方面非常有用。我還沒有注意到性能問題,但我發現的一件事是配置可能會有點麻煩。爲了幫助這方面,我開始看看Binsor,這是一個寫在溫哥華的DSL的DSL。

另一件需要注意的事情是,當瀏覽代碼時,你將無法訪問將在運行時執行的代碼。

0

我建立了一個非常輕便,基本IOC,在這裏:

http://blogs.microsoft.co.il/blogs/shay/archive/2008/09/30/building-custom-object-mapper.aspx

這不是你提到的庫的選擇,但如果所有你需要的是通過給它的接口它可能解決一個類型成爲完美的解決方案。

我不處理實例的類型(單身,暫時的,線程,池......),所有的對象將被實例化作爲單身,你把它想:

IRepository _repository = ObjectFactory.BuildFactory<IRepository>(); 

吉文