ASP.NET核心后端服务应用程序

时间:2018-09-17 09:58:06

标签: asp.net postgresql asp.net-core cloud mindsphere

我可以创建一个本质上可以模仿Windows服务并在后台不断运行的Asp.Net核心应用程序吗?我怀疑您可以,但是我不确定要使用哪种应用程序类型(例如控制台应用程序,Web应用程序等)。

场景:这是一个非常特殊的情况,因为它将为我们正在使用的基于云的环境Siemens MindSphere创建。我们已经在云中有了一个可以从PostgreSQL数据库读取的应用程序,但是我们需要一个后端服务应用程序,该应用程序每小时每小时可以调用MindSphere Api,从中接收数据,并使用此数据填充上述数据库中的一个字段。可以使用.net core吗?

1 个答案:

答案 0 :(得分:3)

您可以使用Background tasks。定时任务示例:

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();
    }
}

ConfigureServices中的Startup.cs中进行注册:

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