【问题标题】:Are async/await usefull for web applications? [closed]async/await 对 Web 应用程序有用吗? [关闭]
【发布时间】:2013-01-12 17:36:53
【问题描述】:
我阅读了 C# 5.0 中的 Async 和 Await 关键字,它允许同时执行并行任务。 (这是我理解的)。
这种做法对 Web 应用程序有用吗?
在这里,我们有 AJAX 方法,允许在不阻塞 UI(浏览器)的情况下执行任务。
它们应该只用于异步 Web 服务吗?
您能否举例说明为什么/如何在 Web 应用程序中使用 async/await 关键字? (利用此功能)
【问题讨论】:
标签:
c#
asp.net
async-await
【解决方案1】:
async 和 await 这不是一个创新,我不是简单的语法糖围绕相同的异步调用处理模式,不同之处在于它使编写代码线性, 对于程序员来说更自然的方式。
所以,真正的问题是:我应该在哪里使用异步模式?
好吧,无论何时您需要一些 async 调用,或大量处理多个调用,或一些繁重的处理操作......或任何其他可以在宇宙中找到满足 async 需求的东西。
【解决方案2】:
也许我能想到的最好的例子是从您的异步操作方法中调用一系列 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