2010-04-22 121 views
0

我正在嘗試瞭解DI如何正確工作。 我目前使用溫莎作爲DI容器。我使用它來在代碼中動態加載我的服務而無需直接引用。但是我已經改變了行爲,並且想要更多地瞭解使用DI的實例mgmt。使用依賴注入(DI)進行實例管理

我有一個web應用程序項目,這裏是一個使用PerCall作爲instancemode的WCF服務。這意味着,新的實例/呼叫。在這個WCF中,我調用一個服務(通過DI加載),這個服務調用另一個服務(再次通過DI加載)。 WCF是appdomain中的一個新實例,但服務如何?他們也是新的實例?此容器是否在所有WCF實例中共享,並且此容器中的服務是否也是單個實例?

任何人都可以澄清?

+0

如果你接受從以前的問題 – 2010-04-22 13:35:12

+0

很抱歉,有些答案你可能會得到更多有用的答案,但如果你看看我以前的帖子,然後你會看到,我從來沒有收到正確的答案。這並不是我在這裏問過這麼多問題。我知道我可以在其他帖子上宣傳答案,但我沒有太多時間去閱讀其他帖子。對不起,但沒有故意做。 – Sven 2010-04-22 15:14:57

回答

1

當您的描述太模糊時,很難回答。儘管有幾點:

  • 組件不應該「共享」容器。組件不應該提及容器。

  • 每個整個應用程序都有一個根容器實例。在webapp中,你通常會在ApplicationStart中實例化和配置它,並讓它從那裏完成它的工作。

  • 警惕不要依賴較短生命的組件。例如,單例組件不應該依賴於瞬態組件。

+0

看起來好像我需要了解容器中發生了什麼。目前在應用程序開始時,我會根據配置文件中的內容創建該容器。 (服務)。當我需要服務時,我將它傳遞給構造函數。那裏發生了奇蹟,我得到了該服務的一個實例。但是這個實例存活多久?例如,如果我在MVC控制器中使用服務。控制器保持現場多久?在請求完成之前? – Sven 2010-04-22 15:17:58

+0

這取決於生活方式。你爲什麼不看看文檔和用戶指南? http://castleproject.org/container/documentation/v21/index.html – 2010-04-22 17:05:48