【发布时间】:2017-01-16 00:16:28
【问题描述】:
我有一个使用 EFCore 的 ASP.NET Core 网站。 我想做一些工作,比如登录数据库,但在将响应发送给用户以便更快地回答之后。
我可以在不同的线程中执行此操作,但由于 DbContext 的异步访问,我不确定它是否安全。有什么推荐的方法吗?
public async Task<IActionResult> Request([FromForm]RequestViewModel model, string returnUrl = null)
{
try
{
var newModel = new ResponseViewModel(model);
// Some work
return View("RequestView",newModel)
}
finally
{
// Some analysis on the request
// I would like to defer this part
await Log(model);
}
}
其中一个原因是我想调用一个网络服务(地理编码),它不需要回答,但可以很好地处理日志(我需要坐标的城市/国家)。
【问题讨论】:
-
1.你在做什么,你的日志记录比你减慢整个事情的请求慢得多?听起来像微优化,可能根本不需要线程分配,上下文切换)。 3. 如果你真的坚持并有可靠的数据支持这是一个瓶颈,请将消息(内存或分布式)排队并在后台处理)
-
它并不是真正的“重”,但需要对数据库进行一些读/写(例如检查请求是否已经完成),我只想在这样做之前能够回答因为它没有给用户任何东西,用户更愿意得到他的回应。
标签: entity-framework asp.net-core asp.net-core-mvc