3

我正在开发一个需要从 MVC WebApi 服务器获取数据的 Windows RT 应用程序。问题是响应可能需要几秒钟到 3 分钟。

解决它的最佳方法是什么?

现在,我将 async 调用到 web api 并设置一个较长的超时值以避免异常。这是一个好方法吗?我不太喜欢,因为服务器一直打开一个开放的连接。它会对服务器性能产生重大影响吗?

有没有像“回调”这样的东西,但对于 Web 服务?我的意思是服务器调用客户端发送数据。

4

2 回答 2

3

是的,有一些方法可以让服务器回调客户端,例如 WCF 双工通信。但是,这种技术通常会保持连接打开(在大多数情况下,这是 TCP 会话)。大多数 Web 服务器不支持大量并发请求,因此对服务器的每次长时间调​​用都会增加并发连接的客户端的数量。这将导致在不应该的地方大量使用资源。如果你有很多客户,这样的架构必然会失败。

REST 请求应该是轻量级、小而快的。考虑使用数据库来存储临时结果和工作服务器,以处理负载。这是服务器端的问题,而不是客户端的问题。

于 2013-01-17T19:01:02.500 回答
3

最后我使用 WebSockets 解决了它(感谢 oleksii)。它使连接保持打开状态,但我避免重复轮询结果。现在,当服务器完成该过程时,将数据直接发送到客户端。WebSockets 是一种通过 TCP 中继并已标准化的协议。

http://en.wikipedia.org/wiki/WebSocket

于 2013-01-21T07:34:21.327 回答