我有一个非常快速/轻量级的 mvc 操作,经常被请求,我需要在重负载下保持最短的响应时间。
我需要做的是根据条件不时向 sql server 插入少量数据(记录唯一 id 用于统计,大约 1-5% 的查询)。
我不需要插入数据来响应,如果我因为应用程序重启或其他原因丢失了一些数据,我会活下来。
我想我可以以某种方式对插入进行排队并在后台进行,甚至可以进行某种缓冲 - 比如等到队列收集到 100 个插入,然后一次完成。
我很确定,之前一定有人做过/看过这样的实现,没有必要重新发明轮子,所以如果有人能指出正确的方向,我将不胜感激。
最佳答案
您可以从 Controller 操作中触发一个后台任务来执行插入(即发即弃):
public ActionResult Insert(SomeViewModel model)
{
Task.Factory.StartNew(() =>
{
// do the inserts
});
return View();
}
请注意,IIS 可以随时回收应用程序,这会终止任何正在运行的任务。
关于c# - 在后台/异步任务中插入数据最好的方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7790523/