在我的MVC项目中,我总是使用异步控制器(async,Task,await)作为一般规则。
这是一个好习惯吗?
我知道你是否正在处理IO绑定数据,如图片等,以便检索,但是如果一个特定的方法被多个用户大量打击怎么办?我认为这是一个很好的做法,因为用户“不必排队等待”前一次完成执行的调用---正确吗?
何时使用异步控制器不是一个好主意?
答案 0 :(得分:2)
我认为除非你在控制器操作中执行异步代码,否则你不应该使它async
。异步控制器操作方法不会立即返回到客户端,在异步操作完成时停止请求,然后在该操作完成后发回请求响应。
这可以使您的应用程序更具可伸缩性,因为请求线程被释放以处理其他请求,异步工作不使用线程。因此,如果受到大量用户的欢迎,这将有利于提高性能。
但是,如果您正在进行的工作不是异步的,那么它将没有任何区别,实际上会有一些开销,因为将为async
方法生成状态机,并且可能有额外的线程上下文切换。
我个人只会使用异步控制器,如果他们正在做的工作是IO绑定的。如果它受CPU限制,那么最好同步执行。