2

比方說,我有一個通用的WCF服務和控制檯應用程序項目,不會跨客戶端特定的部署進行更改。我在通過特定客戶端代碼實現的常見項目中有一些接口。客戶端代碼明顯地從客戶端變爲客戶端。我認爲這將是IoC容器的合適用途。在我的通用服務項目中,我將客戶端特定的dll放入bin並通過IoC連接依賴關係。唯一的竅門是這必須動態完成,因爲通用服務項目不能直接引用特定的客戶端項目。雖然沒有什麼大不了的。使用IoC容器的適當情況?

這是IoC容器的正確用法嗎?

回答

3

如果我正確理解你的系統,也許你可以從看看Managed Extensibility Framework中獲益。

+0

+1:29秒前... – 2009-11-12 12:18:08

+0

+1,但請在單獨的答案中查看我的討論 – 2009-11-12 12:35:10

1

依賴注入(DI - 你稱之爲IoC)與支持Add-Ins/PlugIns有點不同。

DI的目的是管理依賴關係並減少系統不同部分之間的耦合。它可以感覺有點像加載項,但稍有不同,因爲通常只是將接口的一個實現替換爲另一個接口。

隨着加載宏,在另一方面,該目的是提供零個,一個或同一服務許多實現。

在這兩種情況下,您可能都希望基於配置文件在運行時解析實現,掃描文件夾或類似文件,因此存在很大程度的重疊。

什麼使得它更加複雜的是,加載項本身可能具有依賴性,並且您可能需要支持(進入DI領域)。

對於Add-In場景,我會第二次Konamimam的建議:MEF聽起來像它會符合您的要求。

0

是的,這將工作正常。您只需確保客戶端特定的DLL帶來自己的註冊。使用StructureMap,它將作爲客戶端特定DLL中的註冊表類實現。