Sobes.tech
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)