异步控制器给我带来什么好处?

Dan*_*ang 3 c# asp.net-mvc asynchronous

这两种行动方法有什么区别?

public ActionResult Index()
{
    var task = new ServiceClient().GetProductsAsync();

    return View(task.Result);
}

public async Task<ActionResult> Index()
{
    var task = new ServiceClient().GetProductsAsync();

    return View(await task);
}
Run Code Online (Sandbox Code Playgroud)

SLa*_*aks 6

第一个将阻止ASP.Net请求线程,直到从数据库中获得结果.

第二个将立即释放ASP.Net线程,然后在结果进入时再抓取另一个.

因此,第二个更具可扩展性.

请注意,此答案假定您正在调用的异步链正确写入并以实际的异步套接字操作结束.