【问题标题】:.NET Async on the web-- Must It be w/ an Async Controller?Web 上的 .NET 异步——它必须带有异步控制器吗?
【发布时间】:2013-02-10 03:40:36
【问题描述】:
如果我希望在我的数据层使用 TPL 异步,我是否还必须在我的 MVC 控制器上使用 Task<T>?
换句话说,要使 async 与 .NET MVC 一起工作,是否必须从请求开始时就实现它才能在更深的执行层上工作?或者,即使我使用的是同步控制器,在我的 DAL/Web 请求级别使用 Task<T> 仍然有好处吗?
【问题讨论】:
标签:
asp.net-mvc
asynchronous
task-parallel-library
【解决方案1】:
如果您不使用异步控制器,您将不得不等待某个任务。至此,主要优势就没有了:减少阻塞线程的数量。
当然,如果您同时运行多个异步活动,则情况并非如此。这会将阻塞线程的数量从 N 减少到 1。 (如果 N = 1 没有好处,只有伤害)。
请注意,默认情况下异步并不快。它在 ASP.NET 中的主要目的是在极端情况下获得可伸缩性 - 处理 100 多个并发请求。只有这样,它才会更快或规模更大。
因此,如果您有“通常”数量的并发请求(例如