Middle
What is the purpose of service configuration methods in C#?
sobes.tech AI
Answer from AI
For dependency registration in a Dependency Injection container. This allows the application infrastructure to manage the creation of service instances and inject them where needed.
Main goals:
- Lifecycle management: Defining the lifespan of a service instance (Singleton, Scoped, Transient).
- Decoupled architecture: Reducing coupling between components through the use of abstractions (interfaces).
- Testability: Easy replacement of service implementations for unit testing.
- Configurability: Ability to replace one implementation with another without changing client code.
Example of service registration in ASP.NET Core:
// Startup.cs or Program.cs in Minimal APIs
public void ConfigureServices(IServiceCollection services)
{
// Registering a service with Singleton lifecycle
services.AddSingleton<ISingletonService, SingletonService>();
// Registering a service with Scoped lifecycle
services.AddScoped<IScopedService, ScopedService>();
// Registering a service with Transient lifecycle
services.AddTransient<ITransientService, TransientService>();
// Registering MVC and other standard services
services.AddControllersWithViews();
}
Service lifecycles:
| Lifecycle | Description | Instances per HTTP request |
|---|---|---|
| Singleton | One instance for the entire application lifetime. | One |
| Scoped | One instance per request (in the HTTP context). | One |
| Transient | A new instance is created for each service request. | Multiple (per injection) |