【发布时间】:2011-08-23 21:36:59
【问题描述】:
我知道当您处理 UI 时,异步库使异步实现非常容易。但是我看不到它可以提高性能的任何服务器端用法。在哪些服务器端场景中可以使用 await 来提升性能?
【问题讨论】:
-
在现有的异步调用 API 上使用异步不会使您的应用程序突然变得更高效,它只会使编写和维护代码更易于管理。这不是要问的正确问题。
标签: async-await c#-5.0
我知道当您处理 UI 时,异步库使异步实现非常容易。但是我看不到它可以提高性能的任何服务器端用法。在哪些服务器端场景中可以使用 await 来提升性能?
【问题讨论】:
标签: async-await c#-5.0
Async 在网络场景中特别有用,因为服务器之间的通信很少没有延迟。向另一个 Web 服务器(另一个层,第三方 REST 服务)发出请求,甚至查询数据库通常是通过阻止当前线程执行任何工作的阻塞调用来完成的,直到远程调用完成。通过能够await 远程调用,您的当前线程被释放以处理其他请求,从而减少内存压力(IIS 每个线程使用 256KB 的堆栈空间)并增加潜在负载(在您用完之前可以运行更多并行任务线程数)。
ASP.NET 的大多数基本管道使用IHttpHandler 而不是IHttpAsyncHandler,这意味着它假定了阻塞行为,但可以在 ASP.NET 中使用异步。
【讨论】:
与使用现有异步调用 API 相比,使用异步不会使您的应用程序突然性能更好,它只会使编写和维护代码更易于管理。这不是正确的问题。
【讨论】: