Ari*_*ian 14 c# asp.net multithreading c#-5.0 async-ctp
我最近阅读了一篇关于c#-5
新的和漂亮的异步编程功能的文章.我看到它在Windows应用程序中运行很好.问题来自我是否可以提高ASP.Net的性能?
考虑这两个psudo代码:
public T GetData()
{
var d = GetSomeData();
return d;
}
Run Code Online (Sandbox Code Playgroud)
和
public async T GetData2()
{
var d = await GetSomeData();
return d;
}
Run Code Online (Sandbox Code Playgroud)
在ASP.Net中有两个代码差异吗?
谢谢
Jon*_*eet 15
好一开始你的第二段代码将返回Task<T>
而不是T
.最终的答案是"它取决于".
如果您的页面需要访问多个数据源,则可以更轻松地并行访问这些源,只在必要时使用每次访问的结果.因此,例如,您可能希望开始将长时间运行的数据提取作为页面处理的第一部分,然后只需要最后的结果.显然可以在不使用async/await的情况下执行此操作,但是当语言帮助您时,它会更简单.
此外,如果大多数请求在很多时候都处于空闲状态,例如在长轮询场景中,异步可用于处理少量线程上的大量长时间运行请求.在某些情况下,我可以看到异步能力被用作SignalR的替代品.
服务器端异步的好处比客户端更难确定,因为它有不同的帮助方式 - 而"避免在UI线程上工作"这一点非常明显,很容易看出它的好处.
不要忘记服务器端编码可能比前端更多.根据我的经验,异步最有可能在实现RPC服务时很有用,特别是那些与多个其他 RPC服务通信的服务.
正如Pasi所说,它只是语法糖 - 但我相信它是足够甜的糖,它可能使正确的异步处理之间的差异变得可行,而且它只是太多的努力和复杂性.
归档时间: |
|
查看次数: |
3271 次 |
最近记录: |