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

vto*_*ola 2 asp.net-mvc controller asynccontroller asp.net-mvc-3

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

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

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

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

干杯.

Dar*_*rov 5

可以在AsyncController中使用异步和同步动作方法吗?

是.

这样做有什么缺点吗?

并不是的.

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

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

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

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