Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C#

AddSingleton vs AddScoped vs AddTransient Trong C# ASP.NET Core Là Gì?


Có ba cách để đăng ký phụ thuộc (dependencies) trong Startup.cs: AddSingleton, AddScoped và AddTransient.

Add Singleton

Khi đăng ký một kiểu là singleton, chỉ có một thể hiện (instance) khả dụng xuyên suốt ứng dụng và cho mọi yêu cầu (request).

Điều này tương tự như có một đối tượng static.

Thể hiện được tạo cho yêu cầu đầu tiên và thể hiện đó khả dụng xuyên suốt ứng dụng và cho mỗi yêu cầu tiếp theo.

public void ConfigureServices(IServiceCollection services){ 
    services.AddSingleton<ILog,Logger>() 
}

Add Scoped

Khi đăng ký một kiểu là Scoped, một thể hiện khả dụng xuyên suốt ứng dụng cho mỗi yêu cầu. Khi một yêu cầu mới đến, một thể hiện mới được tạo. Add scoped chỉ định rằng một đối tượng đơn lẻ khả dụng cho mỗi yêu cầu.

public void ConfigureServices(IServiceCollection services){ 
    services.AddScoped<ILog,Logger>() 
}

Add Transient

Khi đăng ký một kiểu là Transient, mỗi lần một thể hiện mới được tạo. Transient tạo thể hiện mới cho mọi service/controller cũng như cho mọi yêu cầu và mọi người dùng.

public void ConfigureServices(IServiceCollection services){ 
    services.AddTransient<ILog,Logger>() 
}


Tham Số Add Singleton Add Scoped Add Transient
Thể Hiện (Instance) Giống nhau mỗi yêu cầu/mỗi người dùng. Một cho mỗi yêu cầu. Khác nhau mỗi lần.
Giải Phóng (Disposed) Khi ứng dụng tắt Cuối yêu cầu Cuối yêu cầu
Sử Dụng Trong Khi cần triển khai Singleton. Ứng dụng có hành vi khác nhau cho mỗi người dùng. Dịch vụ nhẹ và không trạng thái (stateless).