gpt4 book ai didi

c# - ASP.NET Web API 异步响应和写入

转载 作者:太空宇宙 更新时间:2023-11-03 13:18:33 26 4
gpt4 key购买 nike

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

public class MyController : ApiController
{
dynamic Post(dynamic postParams)
{
var data = retrieveData(postParams.foo, postParams.bar);
writeDataToDb(data);
return data;
}
}

所以一共有三个操作,根据post参数获取数据,将获取到的数据写入DB,将获取到的数据以JSON格式返回给客户端。

如果数据库写入步骤不阻止将 JSON 返回给客户端,这可能会大大加快,因为它们彼此不依赖。

我担心的是,如果我在另一个线程中关闭数据库注销,则返回的 Post 方法将导致进程终止并可能终止数据库写入。处理这种情况的正确方法是什么?

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

最佳答案

我会产生一个分离的关注点。让一种方法从数据库查询数据(适用于 GET 方法),另一种方法用于更新数据库中的数据(适用于 POST 或 UPDATE 方法)。这样,检索数据的操作就会更轻松,耗时更少。

作为旁注,在没有向 ASP.NET 线程池注册新线程的情况下旋转新线程是危险的,因为 IIS 可能会决定在特定时间回收您的应用程序。因此,如果您使用的是 .NET 4.5.2,请确保使用 HostingEnvironment.QueueBackgroundWorkItem在 ThreadPool 上排队工作。如果没有,您可以使用 stephan clearys BackgroundTaskManager .另外,我建议阅读更多 stephans 文章 Fire and Forget on ASP.NET

关于c# - ASP.NET Web API 异步响应和写入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25188949/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com