DoasyncandawaitimprovetheperformanceofASP.Netapplications最近看了一篇关于c#-5的文章和异步编程新的好看的文章特征。我已经看到它在Windows应用程序中工作得很好。我的问题是这个功能是否可以提高ASP.Net性能?考虑这两个伪代码:publicTGetData(){vard=GetSomeData();返回d;}和publicasyncTGetData2(){vard=awaitGetSomeData();返回d;}在ASP.Net中这两种代码有区别吗?谢谢好吧,首先你的第二段代码将返回Task而不是T最后的答案是“这取决于”。如果您的页面需要访问多个数据源,并行访问这些数据源会更容易,只在必要时使用每次访问的结果。因此,例如,您可能希望将长时间运行的数据提取作为页面处理的第一部分,然后只需要最终结果。显然可以在没有async/await的情况下执行此操作,但是当语言帮助您时它会更简单。此外,如果大多数请求在很多时间都处于空闲状态,例如在长轮询场景中,异步可用于在少量线程上处理大量长时间运行的请求。在某些情况下,我可以看到异步功能被用作SignalR的替代品。服务器端异步的好处比客户端更难确定,因为它以不同的方式提供帮助——虽然“避免在UI线程上工作”是如此明显,但很容易看出它的好处。不要忘记服务器端编码可能不仅仅是前端。根据我的经验,async在实现RPC服务时最有可能有用,尤其是那些与多个其他RPC服务通信的服务。正如Pasi所说,它只是语法糖-但我相信它足够甜,可以使正确的异步处理变得可行,而且它需要太多的努力和复杂性。定义“性能”。最终,应用程序将完成与同步完成的相同数量的工作,只是在异步版本中,调用线程将等待另一个线程完成操作,而在同步模型中,它是同一个线程执行任务。最终,在两种情况下,客户端在看到来自Web服务器的响应之前将等待相同的时间,因此您不会注意到任何性能差异。如果Web请求是通过异步处理程序处理的,那么响应仍将花费相同的时间返回-但是,您可以减轻线程池的压力并使Web服务器本身在接受请求时响应更快-请参阅这个其他的详情所以。由于代码是在服务器上执行的,用户仍然需要等待响应,所以问题就像是-异步调用是否比同步调用更快。好吧,这主要取决于服务器的实现。使用IIS和多个用户,每个用户会生成太多线程(即使没有异步),异步也会很低效。但如果用户数量少,应该会更快。一种方法是尝试一下。不。这些是纯粹的语法糖,通过编写简单的代码并在修复错误时简单地阅读代码,使程序员的工作更轻松。它确实允许在不阻塞UI的情况下以更简单的方式加载数据,所以在某种程度上是的,但不是真的。如果您需要做多件事,它只会提高性能,无需任何其他信息即可完成所有操作。否则你也可以按顺序进行。就您而言,答案是否定的。该页面无论如何都需要等待每一页。以上就是C#学习教程的全部内容:async和await是否会提高ASP.Net应用程序的性能。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文来自网络收藏,不代表立场,如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处:
