有关何时使用同步操作方法或异步操作方法的准则。
这只是一些准则;您必须逐个检查每个应用程序以确定异步操作方法是否能帮助提高性能。
通常,在满足以下条件时使用同步管线:
- 操作很简单或运行时间很短。
- 简单性比效率更重要。
- 此操作主要是 CPU 操作而不是包含大量的磁盘或网络开销的操作。对 CPU 绑定操作使用异步操作方法未提供任何好处并且还导致更多的开销。
通常,在满足以下条件时使用异步管线:
- 操作是网络绑定的或 I/O 绑定的而不是 CPU 绑定的。
- 测试显示阻塞操作对于网站性能是一个瓶颈,并且通过对这些阻塞调用使用异步操作方法,IIS 可对更多的请求提供服务。
- 并行性比代码的简单性更重要。
- 您希望提供一种可让用户取消长时间运行的请求的机制。
下载的示例演示如何有效地使用异步操作方法。示例程序调用 Sleep 方法来模拟长时间运行的进程。很少有产品应用程序会显示出如此明显的使用异步操作方法的好处。
您应测试应用程序以确定异步方法是否能提供性能好处。在某些情况下,增加每个 CPU 的 IIS 最大并发请求数和每个 CPU 的最大并发线程数可能会更好。有关 ASP.NET 线程配置的更多信息,请参见 Thomas Marquardt 的博客上的文章ASP.NET Thread Usage on IIS 7.0 and 6.0(ASP.NET 线程在 IIS 7.0 和 6.0 上的使用情况)。有关何时执行异步数据库调用的更多信息,请参见 Rick Anderson 博客上的文章Should my database calls be Asynchronous?(我的数据库调用是否应采用异步方式?)。
很少有应用程序要求所有的操作方法都是异步的。通常,将少量的同步操作方法转换为异步方法就会显著增加所需的工作量。