同一控制器中的异步和同步动作方法

时间:2011-10-25 16:20:23

标签: asp.net-mvc asp.net-mvc-3 controller asynccontroller

是否可以在AsyncController中使用异步和同步操作方法?这样做有什么缺点吗?

原因是异步操作对于耗时的操作有意义,但是在HTML中返回表单没有意义。

例如,我有一个生成文件的页面。返回带有输入的表单的action方法几乎没有逻辑,但接收POST的action方法,将其发送到另一个Web服务并中继响应需要一些时间,因此异步执行它是有意义的。

我可以将这些方法放在分离的控制器中,一个是同步的,另一个是同步的,但我想把它们放在一起。

干杯。

1 个答案:

答案 0 :(得分:5)

  

是否可以在AsyncController中使用异步和同步操作方法?

  

这样做有什么缺点吗?

不是。

  

原因是异步操作对于耗时的操作有意义

耗时的操作 I / O密集型,以便您可以从I / O完成端口中受益。如果您在单独的线程中运行CPU耗时的操作,则严格来说无法从异步控制器中获益。相反,它会使事情变得更糟。

  

例如,我有一个生成文件的页面。动作方法   返回带有输入的表单几乎没有逻辑,但是   接收POST的动作方法,将其发送到另一个Web服务   并且中继响应需要一些时间,因此这样做是有意义的   异步。

好的,Web服务调用是I / O密集型操作=>您将从异步控制器中受益。在这种情况下,您可以在同一个异步控制器上执行这两个操作。