Продублирую комментарий
Евгений Добрянский: "Делай для сервиса класс с параметрами, а кто и как объект этого класса создаёт для сервиса не важно"
Суть проблемы сводится к абстрагированию бизнес-логики от способа получения данных.
Можно представить этот как адаптер, которым в одном случае выступает контроллер, получающий веб-форму. В другом - команда консольного приложения.
Как бы там не было, не стоит забивать паттернами голову в данному случае, поскольку способов получения информации на вход бизнес-логики не будет много так или иначе. Ну что еще добавите? Метод API наружу?