我正在开发一个需要从 MVC WebApi 服务器获取数据的 Windows RT 应用程序。问题是响应可能需要几秒钟到 3 分钟。
解决它的最佳方法是什么?
现在,我将 async 调用到 web api 并设置一个较长的超时值以避免异常。这是一个好方法吗?我不太喜欢,因为服务器一直打开一个开放的连接。它会对服务器性能产生重大影响吗?
有没有像“回调”这样的东西,但对于 Web 服务?我的意思是服务器调用客户端发送数据。
我正在开发一个需要从 MVC WebApi 服务器获取数据的 Windows RT 应用程序。问题是响应可能需要几秒钟到 3 分钟。
解决它的最佳方法是什么?
现在,我将 async 调用到 web api 并设置一个较长的超时值以避免异常。这是一个好方法吗?我不太喜欢,因为服务器一直打开一个开放的连接。它会对服务器性能产生重大影响吗?
有没有像“回调”这样的东西,但对于 Web 服务?我的意思是服务器调用客户端发送数据。
是的,有一些方法可以让服务器回调客户端,例如 WCF 双工通信。但是,这种技术通常会保持连接打开(在大多数情况下,这是 TCP 会话)。大多数 Web 服务器不支持大量并发请求,因此对服务器的每次长时间调用都会增加并发连接的客户端的数量。这将导致在不应该的地方大量使用资源。如果你有很多客户,这样的架构必然会失败。
REST 请求应该是轻量级、小而快的。考虑使用数据库来存储临时结果和工作服务器,以处理负载。这是服务器端的问题,而不是客户端的问题。
最后我使用 WebSockets 解决了它(感谢 oleksii)。它使连接保持打开状态,但我避免重复轮询结果。现在,当服务器完成该过程时,将数据直接发送到客户端。WebSockets 是一种通过 TCP 中继并已标准化的协议。