我正在构建一个 WCF 服务,该服务将公开多个操作,它将在 IIS 中运行,因为它需要 HTTPS 端点。大多数操作将在几秒钟或更短的时间内完成;但是,其中一两项操作将需要 5 至 90 分钟。
该服务的主要使用者将是 ASP.NET MVC 应用程序;处理这个问题的正确方法是什么?
我应该延长超时时间并进行一些ajax 调用吗?我是否应该向数据库添加一个表,并让长时间运行的操作更新此数据库,并让 Web 界面每分钟轮询此表?我不确定普遍接受的最佳实践(如果有)是什么。
我为我的高级项目写了类似的东西,基本上是一个作业调度框架。
- 我选择将“作业”的“状态”存储在数据库中。
- 我编写了一个实现 WCF 客户端(代理)的管理器 Windows 服务
- 我编写了一个 WCF 服务来实现我的“工作主机”。
管理器服务将从数据库中读取队列,并将工作分发给我的所有“工作主机”。我让 Windows 服务执行此任务而不是让 UI 直接与工作主机对话的原因是因为它对整个过程提供了额外的控制级别。
我不喜欢从我的工作主机上“拔掉网络电缆”,并且再也不会从这个特定的作业中获得状态更新的想法。因此,Windows 服务使我能够持续监视 WCF 工作主机的进度,如果发生连接错误(或其他意外情况),我可以将状态更新为失败。因此,没有孤立的工作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)