【问题标题】:Is there any benefit of having async methods in an asp.net web api controller?在 asp.net web api 控制器中使用异步方法有什么好处吗?
【发布时间】:2017-05-28 05:24:27
【问题描述】:

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

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

顺便说一句,我不是在问在控制器中使用异步方法是好是坏。一些库只提供异步方法,所以这是不可避免的。我只是问有没有什么好处?

谢谢

【问题讨论】:

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


【解决方案1】:

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

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

查看这些文章:

还有这个问题:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-09
    • 2017-05-19
    • 2019-10-21
    • 1970-01-01
    • 2013-11-24
    相关资源
    最近更新 更多