3.1、在满足以下条件时使用同步管线:
1)、操作很简单或运行时间很短。
2)、简单性比效率更重要。
3)、此操作主要是 CPU 操作而不是包含大量的磁盘或网络开销的操作。 对 CPU 绑定操作使用异步操作方法未提供任何好处并且还导致更多的开销。
3.2、在满足以下条件时使用异步管线:
1)、操作是网络绑定的或 I/O 绑定的而不是 CPU 绑定的。
2)、测试显示阻塞操作对于网站性能是一个瓶颈,并且通过对这些阻塞调用使用异步操作方法,IIS 可对更多的请求提供服务。
并行性比代码的简单性更重要。
3)、您希望提供一种可让用户取消长时间运行的请求的机制。
四、Q&A环节
4.1、既然异步可以大大提供应用程序的响应能力?那么ASP.NET MVC 如果全部用异步控制器(Async Controller),会有什么效果?会成为高吞吐量,高并发的网站么?
仅仅只是把代码加个async事实上不会带来任何性能的提升,必须在需要异步的地方(IO)异步执行才能真正提升吞吐量。异步Controller多用于I/O密集型操作,比如读写数据,且操作之间较为独立;而CPU密集型操作则不适用与异步――无论你是异步处理还是同步处理,最终CPU都会被顶满。所以异步操作确实可以达到提高并发数的效果,但具体还是要看你把它用在哪里。全部使用异步Controller并不会绝对达到提高站点性能的作用。
以上就是ASP.NET MVC如何正确运用异步编程技术的详细内容!
相关阅读 >>
core web中使用appsettings.json配置文件的实例详解(asp.net )
asp.net core mvc应用程度中如何读取当前url请求参数(querystring)的值?
更多相关阅读请进入《asp.net》频道 >>
C#高级编程(第11版) C# 7 & .NET Core 2.0(.NET开发经典名著)
作者:[美]克里斯琴·内格尔(Christian Nagel)著。出版时间:2019年3月。