Sobes.tech
Junior — Middle

Կարո՞ղ է օգտագործել Transient կյանքի ցիկլով ծառայություն կոնտրոլերում:

sobes.tech AI

Պատասխան AI-ից

Այո, Transient կյանքի ցիկլով ծառայությունը կարող է օգտագործվել վերահսկիչի ներսում:

C#-ում Dependency Injection կոնտեքստում (օրինակ, ASP.NET Core-ում):

  • Transient — ծառայությունը ստեղծվում է յուրաքանչյուր պահանջի ժամանակ:
  • Scoped — ծառայությունը ստեղծվում է մեկ անգամ յուրաքանչյուր պահանջի համար (օրինակ, HTTP պահանջ):
  • Singleton — ծառայությունը ստեղծվում է մեկ անգամ ամբողջ ծրագրի կյանքի ընթացքում:

Վահանակները սովորաբար ունենում են Scoped կամ Transient կյանքի ցիկլ։ Եթե վերահսկիչը Scoped է, ապա Transient ծառայության ներդրումը նշանակում է, որ վերահսկիչի ստեղծման ժամանակ նոր օրինակ կստեղծվի։ Սա նորմալ է և հաճախ օգտագործվում է այն ծառայությունների համար, որոնք վիճակ չեն պահում և միայն անհրաժեշտ են գործողություն կատարելու համար:

Կարևոր է հիշել, որ Scoped ծառայությունը չի կարելի ներդնել Singleton-ում, քանի որ Scoped ծառայությունները կախված են հարցման կոնտեքստից:

Օրինակ՝ Transient ծառայության ներդրում վերահսկիչում:

public interface IMyService { void DoWork(); }

public class MyService : IMyService { public void DoWork() { /*...*/ } }

// Startup.cs կամ Program.cs-ում
services.AddTransient<IMyService, MyService>();

public class MyController : ControllerBase
{
    private readonly IMyService _service;
    public MyController(IMyService service)
    {
        _service = service;
    }

    public IActionResult Get()
    {
        _service.DoWork();
        return Ok();
    }
}

Այսպիսով, Transient ծառայության օգտագործումը վերահսկիչում սովորական պրակտիկա է։