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