我可以创建一个本质上可以模仿Windows服务并在后台不断运行的Asp.Net核心应用程序吗?我怀疑您可以,但是我不确定要使用哪种应用程序类型(例如控制台应用程序,Web应用程序等)。
场景:这是一个非常特殊的情况,因为它将为我们正在使用的基于云的环境Siemens MindSphere创建。我们已经在云中有了一个可以从PostgreSQL数据库读取的应用程序,但是我们需要一个后端服务应用程序,该应用程序每小时每小时可以调用MindSphere Api,从中接收数据,并使用此数据填充上述数据库中的一个字段。可以使用.net core吗?
答案 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>();
...
}