Вы должны рассмотреть возможность включения SaveStaging
в сервис, потому что это кажется сквозной задачей. Кроме того, вероятно, было бы целесообразно реализовать многоуровневую архитектуру с точки зрения рефакторинга.
Поскольку это ядро .NET, я бы рекомендовал полностью охватить внедрение зависимостей и внедрить службу в ваше промежуточное ПО.
public interface IStagingService
{
Task Save(int logNumber);
}
public class MyController : ControllerBase
{
private readonly IStagingService _service;
private readonly IHttpContextAccessor _accessor;
public MyController(IStagingService service, IHttpContextAccessor accessor)
{
_service = service ?? throw new ArgumentNullException(nameof(service));
_accessor = accessor ?? throw new ArgumentNullException(nameof(accessor));;
}
//....
}
public class MyMiddleware
{
private readonly RequestDelegate _next;
private readonly IStagingService _service;
public RequestCultureMiddleware(RequestDelegate next, IStagingService service)
{
_next = next;
_service = service ?? throw new ArgumentNullException(nameof(service));
}
public async Task InvokeAsync(HttpContext context)
{
// ...
}
В начале, ваши услуги, скорее всего, начнутся маленькими и простыми. В случае роста приложения сложность этого уровня, вероятно, возрастет, что порождает потребность в некоторых фасадных службах (т.е. службах, состоящих из служб) и, возможно, некоторых провайдерах для таких вещей, как доступ к данным.