Sobes.tech
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 Нав намуна дар ҳар дархости хидмат эҷод мешавад. Бештар (дар ҳар вуруд)