1

如果我想在我的数据层使用 TPL 异步,我是否也必须Task<T>在我的 MVC 控制器上使用?

换句话说,要使 async 与 .NET MVC 一起工作,是否必须从请求开始时就实现它才能在更深的执行层上工作?Task<T>或者即使我使用的是同步控制器,在我的 DAL/Web 请求级别上仍然有好处吗?

4

1 回答 1

1

如果您不使用异步控制器,您将不得不在某个时候等待任务。在这一点上,主要优势消失了:减少阻塞线程的数量。

当然,如果您同时运行多个异步活动,则情况并非如此。这会将阻塞线程的数量从 N 减少到 1。(如果 N = 1 没有好处,只有损坏)。

请注意,默认情况下异步并不快。它在 ASP.NET 中的主要目的是在极端情况下获得可伸缩性 - 处理 100 多个并发请求。只有这样,它才会更快或规模更大。

因此,如果您有“通常”数量的并发请求(例如 < 100),则只需同步即可,不要担心所有这些。

于 2012-10-01T20:39:08.007 回答