Sobes.tech
Middle

Do czego służą metody konfiguracyjne usług w C#?

sobes.tech AI

Odpowiedź od AI

Aby zarejestrować zależności w kontenerze wstrzykiwania zależności (Dependency Injection container). Umożliwia to infrastrukturze aplikacji zarządzanie tworzeniem instancji usług i ich wstrzykiwanie tam, gdzie są potrzebne.

Główne cele:

  • Zarządzanie cyklem życia: Określenie czasu istnienia instancji usługi (Singleton, Scoped, Transient).
  • Rozdzielona architektura: Zmniejszenie zależności między komponentami poprzez użycie abstrakcji (interfejsów).
  • Testowalność: Łatwa wymiana implementacji usług do testów jednostkowych.
  • Konfigurowalność: Możliwość zamiany jednej implementacji na inną bez zmiany kodu klienta.

Przykład rejestracji usług w ASP.NET Core:

// Startup.cs lub Program.cs w Minimal APIs
public void ConfigureServices(IServiceCollection services)
{
    // Rejestracja usługi z cyklem życia Singleton
    services.AddSingleton<ISingletonService, SingletonService>();

    // Rejestracja usługi z cyklem życia Scoped
    services.AddScoped<IScopedService, ScopedService>();

    // Rejestracja usługi z cyklem życia Transient
    services.AddTransient<ITransientService, TransientService>();

    // Rejestracja MVC i innych standardowych usług
    services.AddControllersWithViews();
}

Cykle życia usług:

Cykl życia Opis Instancje w ramach jednego żądania (HTTP)
Singleton Jedna instancja na cały czas działania aplikacji. Jedna
Scoped Jedna instancja na czas trwania żądania (w kontekście HTTP). Jedna
Transient Nowa instancja tworzona przy każdym żądaniu usługi. Wiele (przy każdej iniekcji)