Middle
Zašto se koriste metode konfiguracije usluga u C#?
sobes.tech АИ
Одговор од АИ
Za registraciju zavisnosti u kontejneru za ubrizgavanje zavisnosti (Dependency Injection container). Ovo omogućava infrastrukturi aplikacije da upravlja kreiranjem instanci servisa i da ih ubrizgava tamo gde su potrebne.
Glavni ciljevi:
- Upravljanje životnim ciklusom: Određivanje vremena postojanja instance servisa (Singleton, Scoped, Transient).
- Odvojena arhitektura: Smanjenje zavisnosti između komponenti korišćenjem apstrakcija (interfejsa).
- Testabilnost: Lako zamenjivanje implementacija servisa za jedinićsko testiranje.
- Konfigurisivnost: Mogućnost zamene jedne implementacije drugom bez promene klijentskog koda.
Primer registracije servisa u ASP.NET Core:
// Startup.cs ili Program.cs u Minimal APIs
public void ConfigureServices(IServiceCollection services)
{
// Registracija servisa sa životnim ciklusom Singleton
services.AddSingleton<ISingletonService, SingletonService>();
// Registracija servisa sa životnim ciklusom Scoped
services.AddScoped<IScopedService, ScopedService>();
// Registracija servisa sa životnim ciklusom Transient
services.AddTransient<ITransientService, TransientService>();
// Registracija MVC i drugih standardnih servisa
services.AddControllersWithViews();
}
Životni ciklusi servisa:
| Životni ciklus | Opis | Primeri unutar jednog HTTP zahteva |
|---|---|---|
| Singleton | Jedan primer tokom celog trajanja aplikacije. | Jedan |
| Scoped | Jedan primer tokom trajanja zahteva (u HTTP kontekstu). | Jedan |
| Transient | Novi primer se kreira pri svakom zahtevu servisa. | Više (pri svakom ubrizgavanju) |