Middle
Pentru ce sunt folosite metodele de configurare a serviciilor în C#?
sobes.tech AI
Răspuns de la AI
Pentru a înregistra dependențele în containerul de injecție a dependențelor (Dependency Injection container). Acest lucru permite infrastructurii aplicației să gestioneze crearea instanțelor de servicii și să le injecteze acolo unde sunt necesare.
Obiective principale:
- Gestionarea ciclului de viață: Determinarea duratei de existență a unei instanțe de serviciu (Singleton, Scoped, Transient).
- Arhitectură decuplată: Reducerea dependenței între componente prin utilizarea abstracțiilor (interfețe).
- Testabilitate: Înlocuirea ușoară a implementărilor serviciilor pentru testare unitară.
- Configurabilitate: Posibilitatea de a înlocui o implementare cu alta fără a modifica codul client.
Exemplu de înregistrare a serviciilor în ASP.NET Core:
// Startup.cs sau Program.cs în Minimal APIs
public void ConfigureServices(IServiceCollection services)
{
// Înregistrarea unui serviciu cu ciclu de viață Singleton
services.AddSingleton<ISingletonService, SingletonService>();
// Înregistrarea unui serviciu cu ciclu de viață Scoped
services.AddScoped<IScopedService, ScopedService>();
// Înregistrarea unui serviciu cu ciclu de viață Transient
services.AddTransient<ITransientService, TransientService>();
// Înregistrarea MVC și a altor servicii standard
services.AddControllersWithViews();
}
Ciclurile de viață ale serviciilor:
| Ciclu de viață | Descriere | Instanțe în cadrul unei singure solicitări (HTTP) |
|---|---|---|
| Singleton | O singură instanță pe durata întregii aplicații. | Una |
| Scoped | O instanță pe durata solicitării (în contextul HTTP). | Una |
| Transient | O nouă instanță este creată la fiecare solicitare de serviciu. | Mai multe (la fiecare injecție) |