在asp.net web api控制器中使用异步方法有什么好处吗?

时间:2017-01-12 22:48:58

标签: c# asp.net-mvc asp.net-web-api asp.net-core async-await

据我所知,异步方法调用将在新线程中启动该方法,并立即将控制权交还给发起调用的线程。因此,在WinForm应用程序中,当在事件处理程序中调用异步方法时,该方法将由新线程执行,并且控件将立即返回到启动调用的线程,在这种情况下是UI线。此时,UI线程可用于响应其他用户请求,直到异步调用完成,因此UI线程可以继续执行事件处理程序内的代码。

我的问题是在同一场景中会发生什么,而不是我们拥有的WinForms应用程序和asp.net web api控制器(或者用于web应用程序和web api的asp.net核心控制器)在WinForms中的UI线程是一个在调用异步方法后重新获得控制权以便能够响应其他用户交互的方法。 asp.net web api(或asp.net核心)中的等效线程是什么,是否有任何其他形式的交互可以响应?

顺便说一句,我不是要问在控制器中使用异步方法是好还是坏。有些库只提供异步方法,所以它是不可避免的。我只想问一下是否有任何好处?

由于

1 个答案:

答案 0 :(得分:10)

对于IIS,.NET Framework维护一个用于为ASP.NET请求提供服务的线程池。如果同步处理请求,则在处理请求时处理请求的线程正忙,并且该线程无法为另一个请求提供服务。由于线程池没有可用的无限数量的线程,我们可能会遇到同步接口问题。因此,当您需要执行I / O密集型和其他非CPU绑定请求时,您将通过利用异步操作获得好处。如果您使用MVC4或更高版本,则可以使用AsyncController Class,如果您使用的是4和async方法之前的MVC版本。

使用异步方法的一个好例子是,如果您的网站正在处理用户提交的文件。根据文件类型,正在进行的处理类型和文件大小,这可能是一项资源密集且耗时的操作,因此使用异步方法执行文件操作将为您带来明显的好处。

查看这些文章:

这个问题:

相关问题