处理Web服务失败的最佳实践

时间:2009-03-16 21:17:55

标签: ajax web-services

在Ajax Web应用程序中,当从浏览器到服务器的Web服务调用失败时,您会怎么做?

  • 自动重试,希望是间歇性网络故障或服务器错误。 (但是当您遇到真正的服务器问题时,由于来自重试的流量增加,您可能会面临更多问题。)
  • 失败,并向用户显示消息,例如“请稍后再试。”

我知道没有正确或错误的答案,只是想知道人们认为什么是最佳做法。

5 个答案:

答案 0 :(得分:2)

正如你所说,没有正确或错误的答案,必须根据具体情况做出选择:

  • 对于新邮件的网络邮件轮询将无提示失败,如果服务器在经过一定程度的重试后可以删除(如邮件客户端那样),则重试并警告用户
  • 动态加载其内容的页面将立即让用户知道内容不可用,以及为什么不让他触发重试(就像任何浏览器一样)

没有正确的答案,但我认为能够拦截网络服务失败然后自动化这个坏习惯的用户(我们)可能会感到遗憾:重试,重试,重试......

答案 1 :(得分:1)

静默重试一次或两次,然后失败并向用户发出警告。

为避免重复,请在每个请求中包含唯一ID,并在服务器上丢弃具有相同ID的请求。

答案 2 :(得分:0)

最近我一直在家里使用Google Docs。有时,我的连接会停止一段时间然后最终返回。我想知道应用程序何时保存有问题(这是在不同的时间间隔),但我并不总是担心它的确如此,我不希望模型中断(只是某处的消息)。如果真的很糟糕(无法保存很长时间),我只需将整个缓冲区复制到记事本中并将其保存为备份。

这是一个很好的例子,因为我的'交易'基本上是本地的,直到我需要保存它。上下文在我的电脑上一段时间,然后是服务器,然后是我的电脑。如果应用程序在每次无法工作时挂起,我将无法将其用于任何非平凡的事情。

如果应用只是一个访问服务器的屏幕,那么它的本地部分是微不足道的。它应该让用户了解“交易”的当前状态(成功或失败)。

所以这真的取决于当地的环境有多少以及远程有多少......

保罗。

答案 3 :(得分:0)

这取决于您的使用案例。你能从中恢复失败吗?失败的预期频率是多少? “重试”操作的努力程度可能超过其益处。使用您对应用程序的了解来确定实现复杂的错误处理是否值得...通常不是。

答案 4 :(得分:0)

我也会谨慎使用自动重试。如果他们愿意,我会留给消费者进行重试。我建议的一件事是使用HTTP错误代码来表示发生了什么样的错误(例如415 - 不支持的媒体类型等)。这样消费者就知道如何回复错误信息。