异步控制器

时间:2015-03-20 04:53:48

标签: c# asp.net-mvc asynchronous

在我的MVC项目中,我总是使用异步控制器(async,Task,await)作为一般规则。

这是一个好习惯吗?

我知道你是否正在处理IO绑定数据,如图片等,以便检索,但是如果一个特定的方法被多个用户大量打击怎么办?我认为这是一个很好的做法,因为用户“不必排队等待”前一次完成执行的调用---正确吗?

何时使用异步控制器不是一个好主意?

1 个答案:

答案 0 :(得分:2)

我认为除非你在控制器操作中执行异步代码,否则你不应该使它async。异步控制器操作方法不会立即返回到客户端,在异步操作完成时停止请求,然后在该操作完成后发回请求响应。

这可以使您的应用程序更具可伸缩性,因为请求线程被释放以处理其他请求,异步工作不使用线程。因此,如果受到大量用户的欢迎,这将有利于提高性能。

但是,如果您正在进行的工作不是异步的,那么它将没有任何区别,实际上会有一些开销,因为将为async方法生成状态机,并且可能有额外的线程上下文切换。

我个人只会使用异步控制器,如果他们正在做的工作是IO绑定的。如果它受CPU限制,那么最好同步执行。