Asp.net 如何在不使用windows服务的情况下在ASP中进行后台处理

Asp.net 如何在不使用windows服务的情况下在ASP中进行后台处理,asp.net,background,Asp.net,Background,情景 我有一个web应用程序,需要对数据进行一些计算和处理。此作业是一个长时间运行的作业(几个小时)。作业由用户启动 要求 用户点击流程数据 调用某些函数以开始数据处理 数据处理运行数小时 向用户提供完成百分比等反馈 即使用户注销然后再次登录,他也应该得到此反馈 该要求与Spiceworks有些类似。它在后台运行以检测网络中的设备/计算机,并在其页面中通知用户进度。但是spicework使用windows服务。我们不想使用windows服务 现在的问题是 如果用户关闭页面,任务是否仍在后台运行

情景 我有一个web应用程序,需要对数据进行一些计算和处理。此作业是一个长时间运行的作业(几个小时)。作业由用户启动

要求

  • 用户点击流程数据

  • 调用某些函数以开始数据处理

  • 数据处理运行数小时

  • 向用户提供完成百分比等反馈

  • 即使用户注销然后再次登录,他也应该得到此反馈

  • 该要求与Spiceworks有些类似。它在后台运行以检测网络中的设备/计算机,并在其页面中通知用户进度。但是spicework使用windows服务。我们不想使用windows服务

    现在的问题是

  • 如果用户关闭页面,任务是否仍在后台运行

  • 此任务必须完全完成。如果在两者之间终止,则输出将没有任何意义

  • 如何实际设计这个长时间运行的流程。在ASP.Net环境中

  • 还有一种方法可以显示登录处理状态的所有/相同用户


  • 在后台安排作业有多种方法。您可以使用SQL作业、Windows服务或计划任务

    我会这样设计:

    从我的ASP.NET页面-我将在数据库中存储作业开始的指示,然后由计划任务选择该指示。此任务只是一个控制台应用程序,它从数据库中提取数据,查看用户启动了哪些任务,然后在其中执行下一个操作。。对于percetage complete,您可以将作业中的这些值存储到DB中,并且您的页面将在用户访问该页面时访问该DB以向其显示

    下面是另一个讨论IIS中长时间运行的任务的线程:

    在后台安排作业有多种方法。您可以使用SQL作业、Windows服务或计划任务

    我会这样设计:

    从我的ASP.NET页面-我将在数据库中存储作业开始的指示,然后由计划任务选择该指示。此任务只是一个控制台应用程序,它从数据库中提取数据,查看用户启动了哪些任务,然后在其中执行下一个操作。。对于percetage complete,您可以将作业中的这些值存储到DB中,并且您的页面将在用户访问该页面时访问该DB以向其显示

    下面是另一个讨论IIS中长时间运行的任务的线程:

    您为什么不想使用服务?“这正是服务想要解决的问题。”David Lively。对这是非常适合服务的候选人。但我的预订是因为:1。这是一个现有的代码(太大,不太好)。2.安装在不同的客户端位置。3.对管理权限等的支持将是巨大的。您为什么不想使用服务呢?“这正是服务想要解决的问题。”David Lively。对这是非常适合服务的候选人。但我的预订是因为:1。这是一个现有的代码(太大,不太好)。2.安装在不同的客户端位置。3.支持管理权限等将是巨大的。+1。对我也在这样做。计划任务部分除外。jobstatus存储在表中,并从表中向用户显示。但我不知道运行什么样的调度程序或外部实用程序。我想在IIS上下文中使用它。IIS设计用于处理HTTP请求,而HTTP请求通常是短暂的。我已编辑了我的答案,以包含另一个线程。请检查它是否给了您一些洞察力。再次a+1(如果我能够):)表示右指针。我已经看过了,也看过杰夫的博客,他在Stackoverflow.com上提到了他们是如何处理这个问题的。但我仍然不相信。我提出这个问题是为了抓住尽可能多的可用选项并得到更好的解决方案。对我也在这样做。计划任务部分除外。jobstatus存储在表中,并从表中向用户显示。但我不知道运行什么样的调度程序或外部实用程序。我想在IIS上下文中使用它。IIS设计用于处理HTTP请求,而HTTP请求通常是短暂的。我已编辑了我的答案,以包含另一个线程。请检查它是否给了您一些洞察力。再次a+1(如果我能够):)表示右指针。我已经看过了,也看过杰夫的博客,他在Stackoverflow.com上提到了他们是如何处理这个问题的。但我仍然不相信。我提出这个问题是为了抓住尽可能多的可用选项并获得更好的解决方案。