关于何时在ASP.NET中使用异步操作,我有点模糊。据我所知,每当我调用外部Web服务(如调用Twitter API)时,我应该使用异步操作,以便释放CLR线程并为其他请求提供服务,这是有道理的。
我读过一篇很棒的博客,曾经提到如果你的操作是高效使用CPU,那么你不应该进行异步操作,因为它有一个上下文切换惩罚,但是,如果你做了很长时间的操作并且等了很多,那么值得做上下文切换。
使用ajax调用本地Web服务的页面如何进行数据库操作(大约需要3秒),返回JSON然后使用JQuery返回页面本身,将其再渲染一次,共计4个页面秒?
传统的webform怎么样,来自page_load进行相同的数据库操作调用(3秒),然后再花3秒钟进行渲染?例如,一篇有1000条评论的大型论坛帖子?
我的总体印象是,IIS的设计是否应该使得每个操作在后台默认是异步的,这样所有操作都是非阻塞的,而不会造成上下文切换损失?这是node.js的想法吗?如果你有静态页面,没有等待操作,那么你应该专门写一个同步页面吗?基本上与现在发生的情况相反?
非常感谢。
答案 0 :(得分:0)
异步请求的唯一好处是它可以释放工作线程。所以如果你的工作线程耗尽,你只会注意到它。默认情况下,每个CPU有100个线程。因此,除非每个CPU每4秒有超过100个请求,否则您将不会注意到性能改进。
异步请求的缺点是它使您的代码更难理解和维护。