何时在 Asp.Net Web 应用程序(Web 窗体或 mvc)中使用任务工厂



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

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

我的问题是我们真的在 Web 应用程序中使用上面提到的异步方法(任务、同步/等待)吗?如果我们使用,你能给我一些例子吗?

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

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

你真的应该使用Task.Run而不是BackgroundWorkerTask.Factory.StartNewTask.Run 的默认值比 StartNew 好得多,并且比 BackgroundWorker 更具可组合性和类型安全性。

我的问题是我们真的在 Web 应用程序中使用上面提到的异步方法(任务、同步/等待)吗?

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

如果我们使用,你能给我一些例子吗?我的 Web 应用程序中有一个文档生成模块,我必须在其中从数据库中获取数据并从中创建文档。

是的,数据库查询是基于 I/O 的操作的一个示例。"编写"文档也是如此 - 无论是上传到云存储还是本地文件系统。

我有一篇关于async ASP.NET 的 MSDN 文章,您可能会觉得很有用。

异步在你有磁盘/数据库/网络 I/O 时都很有用。它允许您在等待 I/O 完成时执行其他操作,这可以节省大量成本。异步对于正常的 CPU 密集型操作并不真正有用,因为使其异步会增加开销。

这在 WPF 和 Web 应用程序中都是如此。

如果你想看一个具体的例子,Scott Hanselman有一篇题为"在 ASP.NET 4.5中使用异步方法的魔术"的博客文章,以及一个你可能会发现非常有趣的重要问题。

相关内容

最新更新