我需要从ASP.NET页面调用一个长时间运行的任务,并允许用户在执行时查看任务进度。
在我目前的情况下,我想将一系列数据文件中的数据导入数据库,但这需要相当多的处理。我希望用户能够看到任务的文件有多远,以及在此过程中遇到的任何问题。
由于处理资源有限,我想将此服务的请求排队。
我最近看过Windows Workflow并想知道它是否可以提供解决方案?
我在想一个可能看起来像的解决方案:
ASP.NET AJAX page -> WCF Service -> MSMQ -> Workflow Service *or* Windows Service
有没有人有任何想法,经验或以前做过这类事情?
答案 0 :(得分:1)
我有一本书明确介绍了如何集成WF(WorkFlow)和WCF。显然,这里发布的内容太多了。我认为你的问题应该得到比这个论坛更容易回答的答案,但是Microsoft offers some guidance。
Google搜索“WCF和WF”会产生大量结果。
我确实有一个正在开发的应用程序,我们使用类似的过程使用MSMQ。我们的想法是在产品召回或影响大量商店的已知问题的情况下向我们的所有商店发送紧急信息。它开发和测试OK。
由于业务需求,我们最终没有使用MSMQ - 我们需要知道是否没有立即收到消息以便我们可以调用商店,而不是让商店在他们的PC能够接收时获取它来自队列的消息。但是,它确实很有效。
我上面链接的文章是一个很好的起点。
我们当前的设计,即我们使用的设计,完全符合您对Windows服务的要求。
答案 1 :(得分:0)
您可以让后端导入过程在完成任务的各个部分时将状态记录写入数据库,并且Web应用程序可以只是以任意间隔轮询数据库,并更新进度条或以其他方式勾选任务完成后,无论UI中是否合适。