Dot-Net
單身與否
我有一個 Windows 服務正在執行。在此服務中,我託管了一些服務 (WCF)。我需要某種“記憶體數據持有者”類。此類的目的是在 Windows 服務執行期間保存非持久性數據。此類必須可通過 WCF 服務訪問。他們將一些值放在此類中或從此類中檢索一些值。
我首先想到的是一個單例類。我認為這種模式非常適合這種情況。但後來我讀到一些文章說單例類實際上並沒有那麼好。
那麼這種情況有什麼替代方案嗎?或者這個單身人士可以嗎?工廠方法呢?但是我在哪裡可以找到對象的引用?
單例設計模式真的應該被重新標記為反模式。這是邪惡的。不要使用它。
更好的選擇是使用依賴注入(DI) 並註入一個類,您可以使用該類來保存您需要的非持久數據。
很多人沒有意識到 WCF 支持依賴注入 (DI) 模式,例如建構子注入,沒有太多麻煩。
如果您將注入的類限定為長期存在的對象(通常稱為 Singleton生命週期樣式,但不要與 Singleton 設計模式混淆),您可以在呼叫之間繼續訪問相同的實例。
但是,無論何時使用共享對象(無論您將 Singleton 用作設計模式還是生命週期樣式),您都必須準備好處理多執行緒問題。
除許多其他內容外,這篇文章還介紹瞭如何在沒有預設建構子的 WCF 服務實現中註入依賴項。