Как мне работать с разными сервисами на разных контроллерах через startup.cs? - PullRequest
0 голосов
/ 24 апреля 2020

Я пытаюсь понять, как лучше настроить разные сервисы для разных контроллеров, и могу использовать некоторую помощь, потому что чувствую, что моя реализация неверна. Насколько я понимаю, мы должны позволить файлу startup.cs поднять процесс создания сервисов.

Первоначально я использовал это для справки: https://www.strathweb.com/2017/04/running-multiple-independent-asp-net-core-pipelines-side-by-side-in-the-same-application/

Но, как лучше всего справиться со следующим:

public class ControllerService1 : Controller
{
    private IService1 _service1;

    public ControllerService1 (IService1 service1)
    {
        _service1= service1;
    }

    [HttpGet]
    public SOME_TYPE Get()
    {
        return _service.MakeCall();
    }
}

public class ControllerService2 : Controller
{
    private IDifferentService _differentService;

    public ControllerService2 (IDifferentService differentService)
    {
        _differentService= differentService;
    }

    [HttpGet]
    public string Get()
    {
        return _differentService.DifferentMethod();
    }
}

Здесь каждый контроллер имеет свой интерфейс, в который я хочу загрузить. Способен ли стартап маршрутизировать различные сервисы, которые совершенно другой тип интерфейса на разные контроллеры? Если так, то как? Я не уверен, как справиться с этим, и не смог увидеть документацию, описывающую, как это делается.

Точно так же, что если мой интерфейс _differentService создает вызов веб-службы при определенных условиях, используя интерфейс IMyWebServiceCall? Может быть, время суток определяет, сделаю ли я этот звонок. Этот API-интерфейс может включать в себя другой частный сервис, который является частью объекта DifferentService. Я хотел бы загрузить учетные данные вызова из appsetings. json, верно? Каков наилучший способ справиться с этим? Если этот объект создается и внедряется в _differentService через startup.cs и никогда не используется, это проблема памяти. Разве я не хочу, чтобы определенные интерфейсы / классы загружали этот объект только при необходимости? И если это так, мне нужно будет прочитать учетные данные из appsettings. json из другой библиотеки классов. Это возможно? Я не нашел элегантных способов чтения из файла, отличного от web.config, в. Net Core и мог бы воспользоваться советом. Или существует элегантный метод отложенной загрузки, который запускаемый файл startup.cs может внедрить, чтобы каким-либо образом внедрить IMyWebServiceCall в IDifferentService?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...