Asp.NET 核心后端服务应用

Asp.NET core backend service application

我能否创建一个 Asp.Net 核心应用程序,它可以在本质上模仿 windows 服务并且只是在后台持续 运行?我想你可以,但我不确定要使用哪种应用程序类型(即控制台应用程序、网络应用程序等)。

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

您可以使用 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();
    }
}

在Startup.cs在ConfigureServices注册:

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