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