c# – 我什么时候应该在ASP.NET MVC中使用异步控制器?

我有一些关注使用ASP.NET MVC中的异步操作。什么时候提高我的应用程序的性能,什么时候不?

>是否在ASP.NET MVC中使用异步操作无处不在?
>关于等待的方法:当我想查询数据库(通过EF / NHibernate /其他ORM)时,我应该使用async / await关键字?
>多少次可以使用await关键字在一个动作方法中异步查询数据库?

当操作必须执行几个独立的长时间运行操作时,异步操作方法很有用。

A typical use for the AsyncController class is long-running Web
service calls.

我的数据库调用应该是异步的吗?

IIS线程池通常可以处理比数据库服务器更多的同时阻塞请求。如果数据库是瓶颈,异步调用将不会加速数据库响应。如果没有节流机制,通过使用异步调用将更多的工作有效地分配给不堪重负的数据库服务器只会将更多的负担转移到数据库。如果你的DB是瓶颈,异步调用不会是神奇的子弹。

你应该看看12引用

源自@PanagiotisKanavos评论:

Moreover, async doesn’t mean parallel. Asynchronous execution frees a
valuable threadpool thread from blocking for an external resource, for
no complexity or performance cost. This means the same IIS machine can
handle more concurrent requests, not that it will run faster.

You should also consider that blocking calls start with a
CPU-intensive spinwait. During stress times, blocking calls will
result in escalating delays and app pool recycling. Asynchronous calls
simply avoid this

http://stackoverflow.com/questions/30566848/when-should-i-use-async-controllers-in-asp-net-mvc

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:c# – 我什么时候应该在ASP.NET MVC中使用异步控制器?