【发布时间】:2012-06-20 17:12:00
【问题描述】:
我正在构建一个将公开多个操作的 WCF 服务,它将在 IIS 中运行,因为它需要 HTTPS 端点。大多数操作将在几秒钟或更短的时间内执行;但是,其中一项或两项操作需要 5-90 分钟。
此服务的主要使用者将是一个 ASP.NET MVC 应用程序;处理这个问题的正确方法是什么?
我应该延长超时时间并进行一些 ajax 调用吗?我是否应该向我的数据库添加一个表,让长时间运行的操作更新这个数据库,并让 Web 界面每分钟轮询一次这个表?我不确定什么(如果有)普遍接受的最佳实践。
【问题讨论】:
-
如果长时间运行的操作没有传输数据,那么也许你应该把它分解成一个异步处理器。因此,客户端会请求启动该作业,然后定期检查以获取响应或稍后再检查的消息。
-
@Noah,长时间运行的操作不会返回太多数据,直到它们完成,它们返回大约 50kb 的消息。
-
如果您不传输数据,您绝对不应该长时间保持 http 连接打开,因此最好将其断开。 @Jim 提供了一个不错的例子。