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