簡明教程:ASP-NET Core 中服務的生命週期

       ASP.NET Core 支持依賴注入軟件設計模式,它允許在不同的組件中注入我們的服務,並且控制服務的初始化。有些服務可以在短時間內初始化,並且只能在某個特別的組件,以及請求中才能用到;而還有一些服務,僅僅只用初始化一次,就可以在整個應用程序中使用。

下面我就講一講 ASP.NET Core 中服務的生命週期。

Singleton  -- 單例模式

     只有一個服務的實例被創建,這個實例,存儲在內存中,可以在整個應用程序中使用。我們可以對一些初始化代價比較大的服務,使用 Singleton 模式。在代碼中可以這樣:

services.AddSingleton<IProductService, ProductService>();

Scoped  -- 作用域

     這種模式下,將會爲每一個請求,都創建一個服務的實例。所有同一個請求中的中間件、MVC 控制器,等等,都會得到一個相同的服務實例。Entity Framework Context 就是一個 Scoped 服務最好的參考例子。我們可以通過使用 AddScoped 方法來使用 Scoped 模式:

Transient  -- 短暫的、瞬變的  

    Transient 模式下,服務每次被請求的時候,都會創建一個服務實例,這種模式特別適合輕量級、無狀態的服務。我們可以使用 AddTransient 方法,來注入服務:

services.AddTransient<IProductService, ProductService>();

如果你想將上面我講到的概念形象化,那麼下面的圖標就是你快速參考的一個例子。

對下面圖標的解釋說明:

每天學一點,每天積累一天,進步就不止一點點!PS:好記性不如爛筆頭,學會總結,學會思考~~~ ---- 要飛翔,必須靠自己!

出處:

https://www.cnblogs.com/caofangsheng/archive/2021/04/24/14697683.html

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/uUUqU7rpd-MPEC950wvr3g