Middle
Kam naudojami paslaugų konfigūracijos metodai C#?
sobes.tech AI
Atsakymas iš AI
Priklausomybių registravimas priklausomybės injekcijos konteineryje. Tai leidžia programos infrastruktūrai valdyti paslaugų pavyzdžių kūrimą ir jų įvedimą ten, kur jų reikia.
Pagrindiniai tikslai:
- Gyvenimo ciklo valdymas: Paslaugos pavyzdžio egzistavimo laiko nustatymas (Singleton, Scoped, Transient).
- Atskira architektūra: Mažinti komponentų tarpusavio ryšį naudojant abstrakcijas (sąsajas).
- Testuojamumas: Lengvai pakeisti paslaugų įgyvendinimus modulinio testavimo tikslais.
- Konfigūravimas: Galimybė pakeisti vieną įgyvendinimą kitu be kliento kodo keitimo.
Pavyzdys, kaip registruoti paslaugas ASP.NET Core:
// Startup.cs arba Program.cs - Minimal API
public void ConfigureServices(IServiceCollection services)
{
// Registruoti paslaugą su Singleton gyvenimo ciklu
services.AddSingleton<ISingletonService, SingletonService>();
// Registruoti paslaugą su Scoped gyvenimo ciklu
services.AddScoped<IScopedService, ScopedService>();
// Registruoti paslaugą su Transient gyvenimo ciklu
services.AddTransient<ITransientService, TransientService>();
// Registruoti MVC ir kitus standartinius servisus
services.AddControllersWithViews();
}
Paslaugų gyvenimo ciklai:
| Gyvenimo ciklas | Aprašymas | Pavyzdžių skaičius viename užklausoje (HTTP) |
|---|---|---|
| Singleton | Vienas pavyzdys viso programos gyvavimo metu | Vienas |
| Scoped | Vienas pavyzdys užklausos (HTTP) metu | Vienas |
| Transient | Kiekvieno užklausos metu sukuriamas naujas pavyzdys | Daug (kiekvieno įdiegimo metu) |