Middle
Чӣ тавр истифода бурдани усулҳои конфигуратсияи хидматҳо дар C#?
sobes.tech AI
Ҷавоб аз AI
Барои сабт кардани вобастагиҳо дар контейнери воридкунии вобастагиҳо (Dependency Injection container). Ин имкон медиҳад, ки инфрасохтори барнома идоракунии эҷоди намунаҳои хидматҳоро анҷом диҳад ва онҳоро ба ҷойҳое, ки онҳо заруранд, ворид кунад.
Мақсадҳои асосӣ:
- Идоракунии давраи зиндагӣ: муайян кардани вақти мавҷудияти намунаи хидмат (Singleton, Scoped, Transient).
- Мақомоти алоҳида: Кам кардани вобастагии байни компонентҳо бо истифода аз абстраксияҳо (интерфейсҳо).
- Имконияти озмоиш: Осон кардани иваз кардани иҷроишҳои хидматҳо барои озмоишҳои воҳидиҳо.
- Танзимшавандагӣ: Имконият барои иваз кардани як иҷроиш бо дигар бе тағир додани коди муштарӣ.
Масалан дар ASP.NET Core барои сабт кардани хидматҳо:
// Startup.cs ё Program.cs дар API-ҳои минималӣ
public void ConfigureServices(IServiceCollection services)
{
// Сабт кардани хидмат бо давраи зиндагии Singleton
services.AddSingleton<ISingletonService, SingletonService>();
// Сабт кардани хидмат бо давраи Scoped
services.AddScoped<IScopedService, ScopedService>();
// Сабт кардани хидмат бо давраи Transient
services.AddTransient<ITransientService, TransientService>();
// Сабт кардани MVC ва дигар хидматҳои стандартӣ
services.AddControllersWithViews();
}
Давраҳои зиндагии хидматҳо:
| Давра | Тавсиф | Намунаҳо дар доираи як дархости HTTP |
|---|---|---|
| Singleton | Як намуна дар тамоми давраи барнома. | Як |
| Scoped | Як намуна дар давраи дархост (дар контексти HTTP). | Як |
| Transient | Нав намуна дар ҳар дархости хидмат эҷод мешавад. | Бештар (дар ҳар вуруд) |