2009-08-10 70 views
6

是否有任何理由從默認範圍(瞬態?)切換到其他東西,除了需要控制功能原因的範圍(例如Singleton)?結構圖範圍/生命週期指導?

如果我堅持使用默認範圍,每個插件類型的每個默認實例都會在每個請求上有效地實例化(假設是一個web應用程序),這是否正確?這會明顯影響性能嗎?

我已經考慮過使用Http Session範圍來限制每個用戶登錄時的一個實例。但是,這將導致每個用戶在任何時候都會在內存中存儲每個插件類型的(至少)一個實例。使用默認範圍時,這些實例只能在處理頁面請求時保存在內存中。我不確定哪個更好。

如果您使用StructureMap,您通常如何爲每個插件類型配置範圍?

感謝任何見解,

菲爾

回答

7

我留在原地的默認範圍。這意味着每一個請求(無論是由每個用戶還是由許多用戶),我都有一個對象的實例。這意味着每次都有新的請求。保持會話是我喜歡更具體的控制。出於這個原因,我可能會在服務層上拋出一個緩存層,並將StructureMap返回的對象放入。然後,我可以查詢緩存已經實例化(現在序列化)的對象,並選擇從哪裏得到我的對象。

我會爲Singleton配置做同樣的事情,我會使用StructureMap來獲取實際的對象......但是當它第二次返回對象時,對象本身會將實例交給自己(單身條款)。這使用StructureMap來實現它的功能......但並沒有給它比需要的更多的功能。

+0

感謝您的深思熟慮的迴應。你對單身人士的看法很有趣,我也會考慮這一點。 – 2009-08-11 21:55:31