Базовое приложение службы ядра Asp.NET - PullRequest
0 голосов
/ 17 сентября 2018

Могу ли я создать основное приложение Asp.Net, которое может имитировать службу Windows и просто постоянно работать в фоновом режиме?Я подозреваю, что вы можете, но я не уверен, какой тип приложения использовать (например, консольное приложение, веб-приложение и т. Д.).

Сценарий: это очень нишевая ситуация, поскольку она будет создана для облачной средымы используем, Siemens MindSphere.У нас уже есть приложение в облаке, которое может читать из базы данных PostgreSQL, но нам нужно приложение вспомогательного сервиса, которое каждый час в час может вызывать MindSphere Api, получать данные из него и заполнять поле в вышеуказанной базе данных этими данными.Возможно ли это с помощью ядра .net?

1 Ответ

0 голосов
/ 17 сентября 2018

Вы можете использовать Фоновые задачи .Пример временной задачи:

internal class TimedHostedService : IHostedService, IDisposable
{
    private readonly ILogger _logger;
    private Timer _timer;

    public TimedHostedService(ILogger<TimedHostedService> logger)
    {
        _logger = logger;
    }

    public Task StartAsync(CancellationToken cancellationToken)
    {
        _logger.LogInformation("Timed Background Service is starting.");

        _timer = new Timer(DoWork, null, TimeSpan.Zero, 
            TimeSpan.FromSeconds(5));

        return Task.CompletedTask;
    }

    private void DoWork(object state)
    {
        _logger.LogInformation("Timed Background Service is working.");
    }

    public Task StopAsync(CancellationToken cancellationToken)
    {
        _logger.LogInformation("Timed Background Service is stopping.");

        _timer?.Change(Timeout.Infinite, 0);

        return Task.CompletedTask;
    }

    public void Dispose()
    {
        _timer?.Dispose();
    }
}

Регистрация в Startup.cs в ConfigureServices:

public void ConfigureServices(IServiceCollection services)
{
    ...
    services.AddHostedService<TimedHostedService>();
    ...
}
...