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) |