创建 ASP.NET 核心 Web API 和无限主循环 [已关闭]

Create ASP.NET Core Web API and infinite main cycle [closed]

提问人:JGeorgeJ 提问时间:11/17/2023 最后编辑:marc_sJGeorgeJ 更新时间:11/17/2023 访问量:52

问:


想改进这个问题吗?更新问题,使其仅通过编辑这篇文章来关注一个问题。

5天前关闭。

社群在 5 天前审查了是否重新打开这个问题,并将其关闭:

原始关闭原因未解决

我还是 C# 的新手。我想做的是创建使用更多内核的应用程序,例如通过具有不间断计算的任务,并通过一些 API 进行双向通信。

问题是我不知道我是否应该选择控制台应用程序并以某种方式添加 API,或者创建一个 ASP.NET Core Web API 并添加新任务。

什么是正确的方法,我该如何开始?

C# net-core asp.net-core-webapi

评论


答:

1赞 sandreas 11/17/2023 #1

ASP.NET 使用了一个概念来调用此类任务。HostedService

开始阅读的一个很好的参考是官方文档,网址为:https://learn.microsoft.com/en-us/dotnet/core/extensions/workers?pivots=dotnet-8-0

因此,在您的情况下,我会使用后台的“WebApi”/“ASP.NET 核心”项目,并添加 MessageBus / 事件系统以通过 API 调用与后台服务进行通信。HostedService

为了更灵活,您可以将计算外包到类库类型的额外项目中,以便也可以在命令行应用程序中使用它。

例如:

// Program.cs
// ...
var builder = WebApplication.CreateBuilder(args);
// ...
builder.Services.AddHostedService<MyHostedService>();

而将实现或扩展它的派生物之一:MyHostedServiceIHostedServiceBackgroundService

public class MyHostedService : IHostedService
{
    private readonly IServiceScopeFactory scopeFactory;

    public MyHostedService(IServiceScopeFactory scopeFactory)
    {
        this.scopeFactory = scopeFactory;
    }
    // ... implement interface methods ...
}

评论

0赞 JGeorgeJ 11/17/2023
这似乎很有趣,肯定会尝试。