.Net Core IOC(依賴注入)
阿新 • • 發佈:2022-03-16
原文連結:https://www.cnblogs.com/ysmc/p/16012269.html
暫時(Transient)
- 暫時生存期服務是每次從服務容器進行請求時建立的。 這種生存期適合輕量級、 無狀態的服務。
作用域(Scoped)
- 對於 Web 應用,指定了作用域的生存期指明瞭每個客戶端請求(連線)建立一次服務。
- 在處理請求的應用中,在請求結束時會釋放有作用域的服務。
- 使用 Entity Framework Core 時,預設情況下使用範圍內生存期來註冊 DbContext 型別。
單例(Singleton)
- 來自依賴關係注入容器的服務實現的每一個後續請求都使用同一個例項。 如果應用需要單一例項行為,則允許服務容器管理服務的生存期。
- 單一例項服務必須是執行緒安全的,並且通常在無狀態服務中使用。
- 注意:不要從單一例項解析限定範圍的服務,並小心不要間接地這樣做,例如通過暫時性服務。 當處理後續請求時,它可能會導致服務處於不正確的狀態。最直接的影響是限定範圍的服務無法釋放,間接成了單例模式。一定要使用,就自己建立,並且顯式管理它的生命週期。