C# 如何解决需要花费太多时间的web服务调用?
我正在开发一个需要从MVC WebApi服务器获取数据的Windows RT应用程序。 问题是响应可能需要几秒钟到3分钟 解决这个问题的最佳方法是什么 现在,我调用web api的async并设置一个长超时值以避免异常。这是个好办法吗?我不太喜欢,因为服务器一直都有一个打开的连接。它会对服务器性能产生显著影响吗C# 如何解决需要花费太多时间的web服务调用?,c#,wcf,rest,asp.net-web-api,C#,Wcf,Rest,Asp.net Web Api,我正在开发一个需要从MVC WebApi服务器获取数据的Windows RT应用程序。 问题是响应可能需要几秒钟到3分钟 解决这个问题的最佳方法是什么 现在,我调用web api的async并设置一个长超时值以避免异常。这是个好办法吗?我不太喜欢,因为服务器一直都有一个打开的连接。它会对服务器性能产生显著影响吗 除了web服务,还有类似“回调”的东西吗?我的意思是服务器调用客户端来发送数据。是的,有一些方法可以让服务器调用回调客户端,例如WCF双工通信。然而,这些技术通常会保持连接打开(在大多数
除了web服务,还有类似“回调”的东西吗?我的意思是服务器调用客户端来发送数据。是的,有一些方法可以让服务器调用回调客户端,例如WCF双工通信。然而,这些技术通常会保持连接打开(在大多数情况下,这是TCP会话)。大多数web服务器不支持大量并发请求,因此每次对服务器的长时间调用都会增加并发连接的客户端的数量。这将导致大量资源在不应该的地方被利用。如果您有许多客户机,这样的体系结构肯定会失败
REST请求应轻便、小且快速。考虑使用数据库来存储临时结果和工作服务器,以处理负载。这是一个服务器端问题,而不是客户端问题。最后我使用WebSocket解决了它(感谢oleksii)。它保持连接打开,但我避免重复轮询结果。现在,当服务器完成该过程时,将数据直接发送到客户端。WebSockets是一种通过TCP进行中继的协议,已经标准化
三分钟-哇,服务器做什么?无论如何,如果您正在编写服务器,一个选项可能是使用web服务调用来启动计算,然后使用另一个调用来反复轮询结果,直到结果准备就绪。虽然简单地增加超时时间可能也是一种有效的方法。好的评论。。。如果无法更快地执行服务器端活动,另一种方法是为请求的操作返回“令牌”,并让客户端轮询完成。不是最优的,但可能比保持连接打开要好。不过,您仍然需要管理服务器端清理。