如何从 MVC 创建一个长 运行 的后台任务
How to create a long running background task from MVC
我在 VS 2013 中使用 EF6、MVC 5。我有一个很长的 运行 任务导致超时错误,所以我想将它 运行 设置为单独的后台任务并且return 立即到网络控制器。后台任务将向 SQL 服务器数据库报告进度。本质上,我需要的是 fire and forget 功能。似乎有多种选择:
- 将任务的详细信息写入服务器并使用 Windows 服务来处理它们 更新:这是使用的选项
- 使用
async
- 这似乎不是一个安全的选择
- 使用
HostingEnvironment.QueueBackgroundWorkItem
方法
选项 3 是首选,因为它将所有代码保存在一个解决方案中。请您评论一下每项的优缺点,如果可能的话,请指出第 3 项的工作示例?
HostingEnvironment.QueueBackgroundWorkItem
是 valid solution,但请记住,长时间 运行ning 过程可能会中断,例如,如果应用程序池回收。
更好的选择是在计划任务中 运行 它,例如使用 Quartz.NET.
我在 VS 2013 中使用 EF6、MVC 5。我有一个很长的 运行 任务导致超时错误,所以我想将它 运行 设置为单独的后台任务并且return 立即到网络控制器。后台任务将向 SQL 服务器数据库报告进度。本质上,我需要的是 fire and forget 功能。似乎有多种选择:
- 将任务的详细信息写入服务器并使用 Windows 服务来处理它们 更新:这是使用的选项
- 使用
async
- 这似乎不是一个安全的选择 - 使用
HostingEnvironment.QueueBackgroundWorkItem
方法
选项 3 是首选,因为它将所有代码保存在一个解决方案中。请您评论一下每项的优缺点,如果可能的话,请指出第 3 项的工作示例?
HostingEnvironment.QueueBackgroundWorkItem
是 valid solution,但请记住,长时间 运行ning 过程可能会中断,例如,如果应用程序池回收。
更好的选择是在计划任务中 运行 它,例如使用 Quartz.NET.