我正在构建一个将公开多个操作的WCF服务,它将在IIS中运行,因为它需要HTTPS端点。大多数操作将在几秒或更短的时间内完成;但是,这些操作中的一个或两个将需要5-90分钟。
此服务的主要使用者是ASP.NET MVC应用程序;处理这个问题的正确方法是什么?
我应该加满超时并进行一些ajax调用吗?我应该向我的数据库中添加一个表,并让长时间运行的操作更新此数据库,并让Web界面每分钟轮询一次这个表吗?我不确定通常接受的最佳做法是什么(如果有的话)。
答案 0 :(得分:1)
我为我的高级项目编写了类似的东西,基本上是一个作业调度框架。
管理器服务将从数据库中读取队列,并将工作分发给我的所有“工作主机”。我有Windows服务执行此任务的原因,而不是直接与工作主机进行UI对话,是因为它对整个过程提供了额外的控制。
我不喜欢从我的工作人员主机上拔下“网线拔掉”的想法,并且再也没有从这个特定的工作中再次获得状态更新。因此,Windows服务使我能够不断监视WCF工作者主机的进度,如果发生连接错误(或其他意外的事情),我可以将状态更新为失败。因此,没有孤儿的工作。
答案 1 :(得分:0)