1

I am new into WCF stuff. I am curious to know two things about async methods:

  1. What happens for some reason network goes down when I sending request to the service? Do I get any kind of exception or something k=like that?

  2. What happens if network goes down when service tries to respond to the request? Does the result gets lost?

Thanks for the help!

4

2 回答 2

2

如果服务没有响应,将抛出异常。该程序将收到异常。你可以使用 try...catch 块来捕捉它。如果要记录,则写入日志文件。

根据我的经验,大多数情况下第一个连接需要时间来初始化。有时我得到EndpointNotFoundException或者TimeoutException如果服务力响应。

因此,我创建了一个方法来通过将消息“连接”传递给服务来初始化连接,如果连接建立,服务将返回一个“已连接”消息。否则,如果它返回异常,我会让它重试。

我设置了重试次数= 5。所以如果连接仍然没有建立,它将循环5次。一旦建立,它将继续进行下一个过程。

我们无法控制网络连接,我们无法预料到哪一点,哪一部分失败。但是我们可以在服务失败时控制我们的程序。如果服务失败,取决于您想要做什么。可能会清理数据,重新启动进程或立即停止程序并记录错误以进行调查。

于 2013-09-27T03:02:14.997 回答
2

通过 TCP(包括 HTTP)向 WCF 发送消息大致经历了三个阶段:

  1. 客户端向 WCF 服务发送消息
  2. 只有在成功接收到整个消息后,才会对其进行反序列化,并将其内容传递给相应的服务操作。服务操作运行完成。
  3. 响应(即您从服务操作返回或抛出的内容)被发送到客户端。

如果在 1. 期间连接丢失,您的服务将看不到该消息并且您的客户端将抛出异常。

如果在 2. 期间连接丢失,我认为(但您可以轻松模拟,例如使用Thread.Sleep())服务操作继续执行。

如果在 3. 期间连接丢失,则响应将丢失,但操作将运行。

于 2013-09-26T14:16:58.407 回答