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>();
...
}
我能否创建一个 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>();
...
}