Middle
C#-da xidmətlərin konfiqurasiya metodları nə üçün istifadə olunur?
sobes.tech Süni İntellekt
AI-dan cavab
Asılılıqları Dependency Injection konteynerində qeydiyyatdan keçirmək üçün. Bu, tətbiqin infrastrukturunun xidmət nümunələrinin yaradılmasını idarə etməsinə və lazım olan yerlərə onları injekt etməsinə imkan verir.
Əsas məqsədlər:
- Həyat dövrünün idarə olunması: Xidmət nümunəsinin mövcud olma müddətini müəyyən etmək (Singleton, Scoped, Transient).
- Ayrılmış memarlıq: Komponentlər arasında asılılığı azaltmaq üçün abstraksiyalardan (interfeyslər) istifadə etmək.
- Test ediləbilərlik: Birlik testləri üçün xidmətlərin tətbiqlərini asanlıqla dəyişdirmək.
- Konfiqurasiya ediləbilərlik: Müştəri kodunu dəyişmədən bir tətbiqi digərinə dəyişdirmək imkanı.
ASP.NET Core-da xidmətlərin qeydiyyatı nümunəsi:
// Startup.cs və ya Minimal API-lərdə Program.cs
public void ConfigureServices(IServiceCollection services)
{
// Singleton həyat dövrü ilə xidmətin qeydiyyatı
services.AddSingleton<ISingletonService, SingletonService>();
// Scoped həyat dövrü ilə xidmətin qeydiyyatı
services.AddScoped<IScopedService, ScopedService>();
// Transient həyat dövrü ilə xidmətin qeydiyyatı
services.AddTransient<ITransientService, TransientService>();
// MVC və digər standart xidmətlərin qeydiyyatı
services.AddControllersWithViews();
}
Xidmətlərin həyat dövrləri:
| Həyat dövrü | Təsviri | Bir sorğu (HTTP) daxilində nümunələr |
|---|---|---|
| Singleton | Bütün tətbiq müddətində bir nümunə. | Bir |
| Scoped | Sorğunun müddətində (HTTP kontekstində) bir nümunə. | Bir |
| Transient | Hər xidmət sorğusunda yeni nümunə yaradılır. | Bir neçə (hər injeksiyada) |