我们有一个长期运行的数据传输过程,它只是一个被调用和运行的asp.net页面。完成可能需要几个小时。它似乎工作正常,但我只是想知道什么是一些更流行的方法来处理像这样的漫长过程。您是通过Windows调度程序,Web服务还是自定义处理程序创建应用程序并运行它?
答案 0 :(得分:2)
Windows服务是典型的解决方案。你不想要使用网络服务或自定义处理程序,因为这两者都会成为应用程序池回收的牺牲品,而将杀死你的进程。
答案 1 :(得分:2)
在Web应用程序中长时间运行任务的项目中,我创建了一个Windows服务。 每当用户必须执行耗时的任务时,IIS就会将任务提供给服务,该服务将返回令牌(任务的临时名称),并且在后台服务将执行该任务。在任何时候,用户都会看到他/她的任务的状态,该状态将在队列,处理或完成中处于待处理状态。该服务将并行执行固定数量的作业,并为下一个传入的任务保留队列。
答案 2 :(得分:0)
我发现WF最吸引人的地方是,工作流的设计没有太多复杂性persisted in SQL Server,因此如果服务器在流程中间重新启动,工作流程就可以恢复。
答案 3 :(得分:0)
我根据我的BA的需要使用两种类型的过程。对于按需运行并且可以定期安排的传输过程,我通常编写一个WinForms(这是个人偏好)应用程序,它接受命令行参数,这样我就可以使用params安排作业或通过交互式窗口按需运行它。在过去的几年里,我已经写了足够多的文章,我有自己的基本通用shell,用于创建这种性质的新应用程序。对于必须检测事件的进程(出现在文件夹中的文件,接收CyberMation调用或检测SNMP陷阱),我更喜欢使用Windows服务,以便它们始终可用。这有点棘手,因为你必须对内存使用,泄漏,回收,安全性等更加谨慎。对我来说,Windows应用程序在长时间工作上的运行速度往往比通过IIS进程时更快。我不知道这是因为它附加到IIS线程还是其内存/安全性更受限制。我从来没有调查过它。
我知道.Net应用程序提供了很多灵活性和资源管理,并且通过一些标准和实践,它们可以很快被淘汰并产生非常积极的结果。