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

Asp.NET核心后端服务应用程序,asp.net,postgresql,asp.net-core,cloud,mindsphere,Asp.net,Postgresql,Asp.net Core,Cloud,Mindsphere,我是否可以创建一个Asp.Net核心应用程序,该应用程序基本上可以模拟windows服务,并在后台持续运行?我怀疑您可以,但我不确定使用哪种应用程序类型(即控制台应用程序、web应用程序等) 场景:这是一个非常利基的情况,因为它将为我们正在使用的基于云的环境西门子MindSphere创建。我们已经在云中有了一个可以从PostgreSQL数据库读取数据的应用程序,但我们需要一个后端服务应用程序,该应用程序每小时都可以调用MindSphere Api,从中接收数据,并用这些数据填充上述数据库中的一个

我是否可以创建一个Asp.Net核心应用程序,该应用程序基本上可以模拟windows服务,并在后台持续运行?我怀疑您可以,但我不确定使用哪种应用程序类型(即控制台应用程序、web应用程序等)

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

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

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

谢谢你的回复!我是否可以在一个单独的Asp.Net核心web应用程序中实现此功能,即使它不需要用户交互?@dsis如果您已经有一个Asp.Net核心web应用程序,您可以安全地将其添加到该应用程序中。如果没有,那么是的,您必须创建一个,您需要在某个地方托管它毕竟“我不确定要使用哪种应用程序类型(即控制台应用程序、web应用程序等)”–请注意,所有ASP.NET核心应用程序本质上都是控制台应用程序,因为它们托管自己的web服务器。
public void ConfigureServices(IServiceCollection services)
{
    ...
    services.AddHostedService<TimedHostedService>();
    ...
}