Middle
C#'ta hizmet yapılandırma yöntemleri ne için kullanılır?
sobes.tech yapay zeka
AI'dan gelen yanıt
Bağımlılıkları Bağımlılık Enjeksiyonu konteynerine kaydetmek için. Bu, uygulama altyapısının servis örneklerinin oluşturulmasını yönetmesine ve ihtiyaç duyulduğu yerlere enjekte etmesine olanak tanır.
Ana hedefler:
- Yaşam döngüsü yönetimi: Bir servis örneğinin varlık süresini belirleme (Singleton, Scoped, Transient).
- Bağımsız Mimari: Soyutlamalar (arayüzler) kullanarak bileşenler arasındaki bağımlılığı azaltma.
- Test edilebilirlik: Birim testleri için servis uygulamalarını kolayca değiştirme.
- Yapılandırılabilirlik: Bir uygulamayı değiştirmeden bir uygulamayı diğerine değiştirme imkanı.
ASP.NET Core'da servislerin kaydedilmesine örnek:
// Startup.cs veya Minimal API'lerde Program.cs
public void ConfigureServices(IServiceCollection services)
{
// Singleton yaşam döngüsü ile servis kaydı
services.AddSingleton<ISingletonService, SingletonService>();
// Scoped yaşam döngüsü ile servis kaydı
services.AddScoped<IScopedService, ScopedService>();
// Transient yaşam döngüsü ile servis kaydı
services.AddTransient<ITransientService, TransientService>();
// MVC ve diğer standart servislerin kaydı
services.AddControllersWithViews();
}
Servislerin yaşam döngüleri:
| Yaşam Döngüsü | Açıklama | Bir istekteki (HTTP) örnekler |
|---|---|---|
| Singleton | Uygulama boyunca bir örnek. | Bir |
| Scoped | İstek süresince (HTTP bağlamında) bir örnek. | Bir |
| Transient | Her servis isteğinde yeni bir örnek oluşturulur. | Birkaç (her enjekte edilmede) |