2017-07-06 57 views
0

我们在同一台服务器上有很多(〜15个)WCF服务。连接到他们,我们有一个班级(我叫ClientConnection)。该类将客户端上的所有不同服务管理到一台特定服务器。采用什么策略来处理WCF中的连接丢失

此类负责为每个要求(并缓存它们)的服务创建通道(及其绑定)。

现在,如果连接断开(让我们想象一台交换机关闭,或者一台服务器太忙而无法回答),我想要一个备用策略。

它意味着检测到它破坏,然后尝试恢复连接。

目前我在这门课有一个“看门狗”,它确认它可以到达远程服务,如果没有,它会引发一个事件。

当我得到这个事件时,我该怎么办?刷新频道?处置它并创建一个新的?另外,因为我有10-15个主动服务到同一个服务器,我应该还原它们吗?

我想我应该不会有这个问题,第一个,但我很难找到如何管理放入系统的所有问题

回答

0

这听起来像一个非常适合的Circuit Breaker Pattern

一个很好的策略它的长短之处在于,你基本上有一些容忍失败的重试行为,然后有退步行为逐渐尝试重新建立连接。

+0

我明白了,这正是我想要做的,不知道名字。但我应该如何将这一点付诸实践?因为我不想在每次电话会议上尝试/捕捉这种情况,并且如果其中一项失败,我应该如何管理其他服务? – J4N

+0

@ J4N这几乎就像是每次通话时的尝试,但如果你想拥有这种韧性,并且基本上有一个通过断路器的外观层,那么情况总是如此,所以你打电话的每一项服务都有自己的断路器。显然,这些要求将决定它的复杂程度。 – Clint

+0

但是如果一个服务失败了,另一个服务也会失败,不是吗? – J4N