C# ASP.NET Web API异步响应&;写

C# ASP.NET Web API异步响应&;写,c#,asp.net-mvc,multithreading,asynchronous,asp.net-web-api,C#,Asp.net Mvc,Multithreading,Asynchronous,Asp.net Web Api,我有一个应用程序在后端运行ASP.NET Web API。有一个特定的控制器,看起来像 public class MyController : ApiController { dynamic Post(dynamic postParams) { var data = retrieveData(postParams.foo, postParams.bar); writeDataToDb(data); return data; }

我有一个应用程序在后端运行ASP.NET Web API。有一个特定的控制器,看起来像

public class MyController : ApiController
{
    dynamic Post(dynamic postParams) 
    {
       var data = retrieveData(postParams.foo, postParams.bar);
       writeDataToDb(data);
       return data;
    }
}
因此有三种操作,基于post参数检索数据,将检索到的数据写入数据库,并将检索到的数据作为JSON返回给客户端

如果DB写入步骤没有阻止将JSON返回到客户机,这可以大大加快速度,因为它们彼此不依赖

我担心的是,如果我在另一个线程中剥离DB写,Post方法返回将导致进程中断,并可能导致DB写终止。处理这种情况的正确方法是什么


我是否应该有一个单独的处理程序,向其发送异步web请求,以便DB写入在其自己的进程中发生?

我将生成一个单独的关注点。让一个方法从数据库中查询数据(适用于GET方法),另一个方法用于更新数据库中的数据(适用于POST或UPDATE方法)。这样,检索您的数据将是一个更轻松的操作和更少的时间消耗


顺便说一句,在不向ASP.NET线程池注册的情况下旋转新线程是危险的,因为IIS可能会在某些时候决定回收您的应用程序。因此,如果您使用的是.NET4.5.2,请确保使用将线程池上的工作排队。如果没有,您可以使用stephan clearys。另外,我建议您多读一些stephans的文章

ASP.NET的背景工作可能总是会丢失。这是你有理由担心的。也就是说,我不确定如何看待您对流程的评论。IIS不会为每个请求启动新进程。我明白了。我不知道我从哪里得到一个错误的印象,即每个请求都是在它自己的进程中管理的。将它们分开是最有意义的,并且否定了处理不同线程的需要。我同意,这是一条路。