mvc能全部用async action吗? 10

mvc能全部用asyncaction吗?mvc中有一些asyncaction用于异步操作异步返回,我看一些资料说异步操作用于耗时的io操作包括数据库连接,那我几乎每个ac... mvc能全部用async action吗?mvc中有一些async action用于异步操作异步返回,我看一些资料说异步操作用于耗时的io操作包括数据库连接,那我几乎每个action都用到了读取数据库的操作,我想是不是所有的action都能用async的方式。但是,微软的mvc实例工程并没有全部用async,肯定是有原因的。
我想问下,mvc中是否可以全部使用async action的方式,如果可以。有什么好处或者坏处
展开
 我来答
山山少隐言D
2018-06-26 · TA获得超过229个赞
知道小有建树答主
回答量:1276
采纳率:4%
帮助的人:145万
展开全部
 从我的理解上来看,使用 async Task<ActionResult>去在Controller中实现异步action,目的是为了在高耗时的action操作中,可以暂时把线程池让出来给别的请求,一般网上能找到的文章都是在async action中,await SqlCommand.ExecuteNonQuery,这样就可以达到异步的处理目的。
  我的问题是,如果我使用.net中自带的,ExecuteNonQueryAsync,这个方法其实已经在内部实现了异步访问数据库的操作,应用程序中只需要处理其返回结果就可以了-----那这样的话,我还有必要使用异步action吗?
  从我自己的猜测来说,应该是不需要,因为在ExecuteNonQueryAsync的过程中,上下文已经在其内部实现中被挂起,线程池已经将此线程让出给别的请求,即达到了使用异步的目的。
  那么,在只考虑数据库为高耗时操作的情况下,mvc的异步操作可以分为两种实现:
  1. 异步Action + await 同步方法访问数据库
  
public async Task<ActionResult> Practice()
{
......
SqlCommand command = new SqlCommand ();
......
await command .ExecuteNonQuery();
......
}

  2. 同步Action + 数据库访问Async

public ActionResult Practice()
{
......
SqlCommand command = new SqlCommand ();
......
command .ExecuteNonQueryAsync();
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式