What is the AddSingleton vs AddScoped vs Add Transient C# Asp.net Core?



There are three ways by which dependencies can be registered in Startup.cs. i.e. AddSingleton, AddScoped and AddTransient.

Add Singleton

When we register a type as singleton, only one instance is available throughout the application and for every request.

It is similar to having a static object.

The instance is created for the first request and the same is available throughout the application and for each subsequent requests.

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

Add Scoped

When we register a type as Scoped, one instance is available throughout the application per request. When a new request comes in, the new instance is created. Add scoped specifies that a single object is available per request.

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

Add Transient

When we register a type as Transient, every time a new instance is created. Transient creates new instance for every service/ controller as well as for every request and every user.

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


ParameterAdd SingletonAdd ScopedAdd Transient
InstanceSame each request/ each user.One per request.Different for everytime.
DisposedApp shutdownEnd of requestEnd of request
Used inWhen Singleton implementation is required.Applications which have different behavior per user.Light weight and stateless services.

Advertisements