我在C#5.0中读到了Async和Await Keywords,它允许同时执行并行任务。 (这是我所理解的)。
这种做法对网络应用程序有用吗?
在这里,我们有AJAX方法,允许在不阻塞UI(浏览器)的情况下执行任务。
它们是否应仅用于异步Web服务?
您能举例说明为什么/如何在Web应用程序中使用async / await关键字? (利用这一特点)
答案 0 :(得分:4)
也许我能想到的最好的例子是从异步操作方法中调用一系列Web服务方法。例如:
假设您在Web服务中定义了两种方法,即Method1和Method2。如果每个方法花费1秒钟,同时调用它们将需要2秒,但是以async
方式调用它们将花费更少的时间。
using (DataClient proxy = new DataClient())
{
Task<Object> data1= proxy.Method1();
Task<Object> data2 = proxy.Method2();
await Task.WhenAll(new Task[] { data1, data2 });
//Completed
}
来自MSDN:
AsyncController类使您可以编写异步操作方法。您可以对长时间运行的非CPU绑定请求使用异步操作方法。这可以避免在处理请求时阻止Web服务器执行工作。 AsyncController类的典型用法是长时间运行的Web服务调用。
链接:http://msdn.microsoft.com/en-us/library/ee728598(v=VS.98).aspx
答案 1 :(得分:3)
async
和await
它不是创新,不是简单的语法糖围绕相同的异步调用处理模式,不同之处在于它使代码编写成线性,很多对于编码人员更自然的方式。
所以,真正的问题是:我应该在哪里使用异步模式?
好吧,每当你需要一些async
调用,或大量的多次调用,或者一些繁重的处理操作......或者宇宙中可以找到的其他任何东西来满足async
的需求时。