何时在 Asp.Net Web 应用程序(webform 或 mvc)中使用 TaskFactory?

When to use TaskFactory in Asp.Net Web applications (webform or mvc)?

我现在在 WPF 工作...这里我们使用 Background_Worker,TaskFactory.StartNew 函数和 async/await.

在 Web 应用程序中,我知道我们有 AJAX、MVC 部分视图等

我的问题是我们真的在 Web 应用程序中使用上述异步方法(任务,sync/await)吗?如果我们使用,你能给我一些例子吗?

我的 Web 应用程序中有一个文档生成模块,我必须在其中从数据库中获取数据并从中创建文档。它是异步调用的好场景吗? (调用函数并抛出...并且从不关心它)。

Async 在您有 disk/database/network I/O 的任何时候都很有用。它允许您在等待 I/O 完成时做其他事情,这可以节省大量资金。异步对于正常的 CPU 绑定操作并不是很有用,因为将其设为异步会增加开销。

这在 WPF 和 Web 应用程序中都适用。

如果您想查看具体示例,Scott Hanselman 有一篇名为 The Magic of using Asynchronous Methods in ASP.NET 4.5 plus an important gotcha 的博客文章,您可能会觉得非常有趣。

I am working in WPF now...here we use Background_Worker,TaskFactory.StartNew functions and async/await.

你真的应该使用 Task.Run 而不是 BackgroundWorkerTask.Factory.StartNewTask.Run 的默认值比 StartNew 好得多,并且比 BackgroundWorker.

更具可组合性和类型安全性

My question is do we really use above mentioned async methods (Tasks, sync/await) in Web apps ?

在 ASP.NET 上,您几乎不应该使用自己的后台线程(BackgroundWorkerStartNewTask.Run)。但是,您当然可以使用 asyncawait.

If we use, could you give me some examples ? I have a document generation module in my web app in which I have to fetch data from DB and create documents out of it.

是的,database queries 是 I/O-based 操作的一个示例。 "writing" 文档也是如此 - 无论是上传到云存储还是本地文件系统。

我在 async ASP.NET 上有一个 MSDN article,你可能会觉得有用。