在我阅读.Net 4.5中的异步编程async和await关键字时,我在这里阅读以下段落
处理异步请求
在启动时看到大量并发请求或具有突发性负载(并发性突然增加)的Web应用程序中,使这些Web服务调用异步将提高应用程序的响应能力.异步请求与同步请求相同的处理时间.例如,如果请求进行需要两秒钟才能完成的Web服务调用,则无论是同步执行还是异步执行,请求都需要两秒钟.但是,在异步调用期间,在等待第一个请求完成时,不阻止线程响应其他请求.因此,当有许多并发请求调用长时间运行的操作时,异步请求会阻止请求排队和线程池增长.
对于粗体字,我无法理解异步请求如何像同步请求一样处理相同的时间?
例如:
public async Task MyMethod()
{
Task<int> longRunningTask = LongRunningOperation();
//indeed you can do independent to the int result work here
//and now we call await on the task
int result = await longRunningTask;
//use the result
Console.WriteLine(result);
}
public async Task<int> LongRunningOperation() // assume we return an int from this long running operation
{
await Task.Delay(1000); //1 seconds delay
return 1;
}
Run Code Online (Sandbox Code Playgroud)
我所理解的是LongRunningOperation()从第一行调用开始执行并在调用后Task<int> …
我有一个问题是在WebAPI/MVC控制器AJAX请求上使用async/await是否有益.
假设我有一个与WebAPI后端对话的AngularJS应用程序,我想获得一些数据.我对WebAPI做了一些AJAX调用并等待结果.
就客户而言,这当然是异步.如果我要使这些操作异步,它现在对服务器有益吗?
编辑
我刚刚发现了这个:http://www.dotnetcurry.com/showarticle.aspx? ID = 948 - 说它是
编辑 - 试图澄清 让我试着更清楚.如果我将从WebAPI到服务层的所有调用实现为异步(.NET关键字)与"正常",那么服务器上的处理器负载是否会更少?
如果所有方法都不是Async,IIS会产生更多线程,从而占用更多内存吗?