Нужно ли использовать Command в MediatR для случаев не изменяющих данные в БД
Есть проект (Asp net core) который стараемся поддерживать по DDD Шаблону, Связующим звеном используем библиотеку MediatR. Основной функционал для связи слоев приложения(Query, Command, DomainEvent) через MediatR хорошо реализуется. Возникла задача Запускать/Останавливать легковесный сервис, который работает на фоне в памяти и сам сервис никак не меняет модель (Entities) и соответственно не комитит изменения в бд.
Возникает желание внедрять сервис, как зависимость, напрямую в контроллер, не используя MediatR. Можно GetStatistic метод переписать на Query, для возврата статистики работы сервиса и SubscrubeByFlow/UnsubscrubeByFlow как Command с возвратом результата выполнения? Если кратко еще раз вопрос: нужно ли использовать MediatR для функционала не являющегося частью WriteModel, не изменяющего состояние Entities?
[ApiController]
[Route("Api/[controller]")]
public class DataFlowRuntimeControllerBase : ControllerBaseWithErrorHandler
{
private readonly DataFlowRuntimeService _service;
public DataFlowRuntimeControllerBase(DataFlowRuntimeService service)
{
_service = service;
}
[HttpGet("GetStatistic")]
public ActionResult<IEnumerable<DataFlow>> GetStatistic(CancellationToken ct)
{
var allFlowsRes = _service.GetAllFlows();
return CreateHttpResult(allFlowsRes);
}
[HttpPut("SubscrubeByFlow/{time}")]
public async Task<ActionResult<DataProviderId>> SubscrubeByFlow([FromBody]DataProviderIdDto id, int time, CancellationToken ct)
{
var awaitDataFlowTimeout= TimeSpan.FromSeconds(time);
var dataProviderIdRes = DataProviderId.Create(id.Key, id.Name);
var result = await dataProviderIdRes.Bind( providerId => _service.SubscribeByFlowAsync(providerId, awaitDataFlowTimeout));
return CreateHttpResult(result);
}
[HttpPut("UnsubscrubeByFlow")]
public IActionResult UnsubscrubeByFlow([FromBody]DataProviderIdDto id, CancellationToken ct)
{
var dataProviderIdRes = DataProviderId.Create(id.Key, id.Name);
var result = dataProviderIdRes.Bind(providerId => _service.UnsubscribeByFlow(providerId));
return CreateHttpResult(result);
}
}