Asp.net web api C#webapi控制器的后台处理

Asp.net web api C#webapi控制器的后台处理,asp.net-web-api,Asp.net Web Api,我是新的.NET技术,遇到了一些问题。目前,我正在尝试构建一个RESTAPI,在将结果发送到客户机之前处理长时间的处理。 我试图实现的是,在收到客户的请求后,我想做一个后台处理。但是,我也想向客户发送一个响应 简而言之,就是这样 客户端请求->由控制器处理(进行一些处理)->直接发送响应,忽略仍在运行的后台 在Java上,我可以使用Runnable线程来实现这一点。如何在C#Web API上实现这一点 谢谢。简言之,不要这样做 API的工作不是执行繁重、长时间运行的任务 您可以简单地让API接收

我是新的.NET技术,遇到了一些问题。目前,我正在尝试构建一个RESTAPI,在将结果发送到客户机之前处理长时间的处理。 我试图实现的是,在收到客户的请求后,我想做一个后台处理。但是,我也想向客户发送一个响应

简而言之,就是这样

客户端请求->由控制器处理(进行一些处理)->直接发送响应,忽略仍在运行的后台

在Java上,我可以使用Runnable线程来实现这一点。如何在C#Web API上实现这一点


谢谢。

简言之,不要这样做

API的工作不是执行繁重、长时间运行的任务

您可以简单地让API接收执行某些操作的请求,然后将其委托给另一个服务。然后,API可以发送一个200响应来显示它收到了请求,还可以发送一个指向另一个资源的URL,允许用户跟踪进度

API需要随时可用并响应。它需要为许多用户提供服务,如果他们中的许多人都请求使用大量资源和花费大量时间的东西,那么API很可能只会停止运行,而不会为任何人提供服务


这就是为什么不在API中执行此类操作的原因。让其他服务机构来完成繁重的工作。

简言之,不要这样做

API的工作不是执行繁重、长时间运行的任务

您可以简单地让API接收执行某些操作的请求,然后将其委托给另一个服务。然后,API可以发送一个200响应来显示它收到了请求,还可以发送一个指向另一个资源的URL,允许用户跟踪进度

API需要随时可用并响应。它需要为许多用户提供服务,如果他们中的许多人都请求使用大量资源和花费大量时间的东西,那么API很可能只会停止运行,而不会为任何人提供服务


这就是为什么不在API中执行此类操作的原因。让其他服务来完成繁重的工作。

您的api可以调用另一个异步方法并返回200/OK响应,而无需等待请求完成

你可以了解更多关于

static async Task Main(字符串[]args)
{
控制台。WriteLine(“咖啡准备好了”);
var toastTask=maketoaswithbutterandjamasync(2);
异步任务MakeToastWithButterAndJamAsync(整数)
{
//在这里做点什么。
}
}

您的api可以调用另一个异步方法并返回200/OK响应,而无需等待请求完成

你可以了解更多关于

static async Task Main(字符串[]args)
{
控制台。WriteLine(“咖啡准备好了”);
var toastTask=maketoaswithbutterandjamasync(2);
异步任务MakeToastWithButterAndJamAsync(整数)
{
//在这里做点什么。
}
}

通过引入服务总线或blob存储,使用松耦合体系结构可以实现这一点,一旦您在web api中接收到请求,就可以将其保存到blob/服务总线,并从web api返回确认响应。从service bus/blob存储,使用webjob/function/durable function应用程序使用事件处理消息

这可以通过引入服务总线或blob存储,使用松散耦合的体系结构来实现,一旦您在web api中接收到请求,就可以将其保存到blob/服务总线,并从web api返回确认响应。从service bus/blob存储,使用webjob/function/durable function应用程序使用事件处理消息

static async Task Main(string[] args)
{

    Console.WriteLine("coffee is ready");
    var toastTask = MakeToastWithButterAndJamAsync(2);

        async Task<Toast> MakeToastWithButterAndJamAsync(int number)
        {
         //Do something here.
        }
}